Java系列文章目录
文章目录
- Java系列文章目录
- 一、前言
- 二、学习内容:
- 三、问题描述
- 四、解决方案:
-
- [4.1 新建空间](#4.1 新建空间)
- [4.2 查找密钥](#4.2 查找密钥)
- [4.3 进入开发者中心查找JavaSDK文档](#4.3 进入开发者中心查找JavaSDK文档)
- [4.4 查找文件上传方法](#4.4 查找文件上传方法)
- [4.5 运行测试](#4.5 运行测试)
- 五、总结:
-
- [5.1 学习总结:](#5.1 学习总结:)
一、前言
- 学习七牛云的使用
二、学习内容:
- 七牛云使用步骤
三、问题描述
七牛云文档使用
四、解决方案:
4.1 新建空间
4.2 查找密钥
4.3 进入开发者中心查找JavaSDK文档
4.4 查找文件上传方法
其他使用方法类似
注意引入相关依赖
参考代码:
java
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "/home/qiniu/test.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
} catch (QiniuException ex) {
ex.printStackTrace();
if (ex.response != null) {
System.err.println(ex.response);
try {
String body = ex.response.toString();
System.err.println(body);
} catch (Exception ignored) {
}
}
}
4.5 运行测试
- 输入地址localhost:8080/doc.html打开文档
- 运行后上传测试如果成功进入空间即可查看
使用knif4j测试
五、总结:
5.1 学习总结:
- 有很多传递方法
第一种方法:
java
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "";
String secretKey = "";
String bucket = "";// 设置上传的存储区域
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;
LocalDate now = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String format = now.format(formatter);
String originalFilename = file.getOriginalFilename();
String extend = originalFilename.substring(originalFilename.lastIndexOf("."));
String fileName = format+ UUID.randomUUID().toString().replace("-","") +extend;
try {
InputStream inputStream = file.getInputStream();
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(inputStream, fileName, upToken,null,null);
//解析上传成功的结果
DefaultPutRet putRet = JSON.parseObject(response.bodyString(),DefaultPutRet.class);
System.out.println("http://scw897cq.hd-bkt.clouddn.com/"+putRet.key);
//如果putRet.key的值是example.jpg,那么输出的URL将是http://scw897cq.hd-bkt.clouddn.com/example.jpg。你可以通过这个URL在浏览器或其他客户端直接访问或下载这个文件。
System.out.println(putRet.hash);
} catch (QiniuException ex) {
ex.printStackTrace();
if (ex.response != null) {
System.err.println(ex.response);
try {
String body = ex.response.toString();
System.err.println(body);
} catch (Exception ignored) {
}
}
}
} catch (UnsupportedEncodingException ex) {
//ignore
}
return "success";
}
文档中的方法:
java
//构造一个带指定 Region 对象的配置类
Configuration cfg = new Configuration(Region.region0());
cfg.resumableUploadAPIVersion = Configuration.ResumableUploadAPIVersion.V2;// 指定分片上传版本
//...其他参数参考类注释
UploadManager uploadManager = new UploadManager(cfg);
//...生成上传凭证,然后准备上传
String accessKey = "your access key";
String secretKey = "your secret key";
String bucket = "your bucket name";
//如果是Windows情况下,格式是 D:\\qiniu\\test.png
String localFilePath = "/home/qiniu/test.png";
//默认不指定key的情况下,以文件内容的hash值作为文件名
String key = null;
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(localFilePath, key, upToken);
//解析上传成功的结果
DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
System.out.println(putRet.key);
System.out.println(putRet.hash);
} catch (QiniuException ex) {
ex.printStackTrace();
if (ex.response != null) {
System.err.println(ex.response);
try {
String body = ex.response.toString();
System.err.println(body);
} catch (Exception ignored) {
}
}
}
区别如下:
文件来源:
- 第一段代码使用MultipartFile接口从HTTP请求中获取文件,这通常是在Web应用中接收前端上传的文件的方式。
- 第二段代码直接使用本地文件路径localFilePath来指定要上传的文件,这种方式适用于上传本地文件系统中的文件。
文件处理方式:
- 第一段代码中,文件被转换为InputStream,并通过file.getInputStream()获取输入流。
- 第二段代码中,直接使用文件路径localFilePath来上传文件。
JSON 解析库:
- 第一段代码使用com.alibaba.fastjson2.JSON来解析响应体。
- 第二段代码使用com.google.gson.Gson来解析响应体。
文件名生成:
- 第一段代码根据当前日期和随机UUID生成文件名,并保留原始文件扩展名。
- 第二段代码没有显示文件名生成逻辑,而是使用默认行为,即如果未指定key则使用文件内容的哈希值作为文件名。
注意引入依赖
参考依赖:
xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>[7.13.0, 7.13.99]</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.alibaba.fastjson2/fastjson2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.49</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.9</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。