当前位置: 首页 > news >正文

Java 文件上传七牛云

Java系列文章目录


文章目录

  • Java系列文章目录
  • 一、前言
  • 二、学习内容:
  • 三、问题描述
  • 四、解决方案:
    • 4.1 新建空间
    • 4.2 查找密钥
    • 4.3 进入开发者中心查找JavaSDK文档
    • 4.4 查找文件上传方法
    • 4.5 运行测试
  • 五、总结:
    • 5.1 学习总结:

一、前言

  • 学习七牛云的使用

二、学习内容:

  • 七牛云使用步骤

三、问题描述

七牛云文档使用


四、解决方案:

4.1 新建空间

在这里插入图片描述

4.2 查找密钥

在这里插入图片描述

4.3 进入开发者中心查找JavaSDK文档

在这里插入图片描述

4.4 查找文件上传方法

其他使用方法类似

注意引入相关依赖

在这里插入图片描述
参考代码:

//构造一个带指定 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 学习总结:

  • 有很多传递方法

在这里插入图片描述
第一种方法:

    //构造一个带指定 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";}

文档中的方法:

//构造一个带指定 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则使用文件内容的哈希值作为文件名。

注意引入依赖

参考依赖:

<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>

声明:如本内容中存在错误或不准确之处,欢迎指正。转载时请注明原作者信息(麻辣香蝈蝈)。

http://www.lryc.cn/news/419743.html

相关文章:

  • 大语言模型生成无人系统(如机械臂、无人机等)可以执行的指令序列
  • 尚硅谷谷粒商城项目笔记——十、调试前端项目renren-fast-vue【电脑CPU:AMD】
  • Python 的元组和列表的区别是什么?
  • 【Impala】学习笔记
  • 视频汇聚平台EasyCVR接入移动执法记录仪,视频无法播放且报错500是什么原因?
  • 【Linux基础】Linux基本指令(二)
  • 全面介绍 Apache Doris 数据灾备恢复机制及使用示例
  • Python pandas常见函数
  • 行业落地分享:阿里云搜索RAG应用实践
  • 【SQL】温度比较
  • Istio 项目会往用户的 Pod 里注入 Envoy 容器,用来代理 Pod 的进出流量,这是什么设计模式?
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • 测试开发岗面试总结
  • 编程-设计模式 7:桥接模式
  • C语言----结构体
  • 基于HKELM混合核极限学习机多输出回归预测 (多输入多输出) Matlab代码
  • 经纬恒润荣获小米汽车优秀质量奖!
  • Linux 软件编程学习第十一天
  • hive udtf 函数:输入一个字符串,将这个字符串按照特殊的逻辑处理之后,输出4个字段
  • 【实现100个unity特效之16】unity2022之前或者之后版本实现全屏shader graph的不同方式 —— 适用于人物受伤红屏或者一些其他状态效果
  • 比特币使用ord蚀刻符文---简单笔记
  • 大数据-74 Kafka 高级特性 稳定性 - 控制器、可靠性 副本复制、失效副本、副本滞后 多图一篇详解
  • c# 什么是扩展方法
  • 全屏组件封装(react18+antd)
  • wordpress全局自适应网址导航整站打包源码,含主题和数据库
  • PyTorch深度学习框架
  • Python和AI库NumPy(二):数组创建与操作
  • GD32 SPI驱动代码
  • Qgis 开发初级 《数据库和图层》
  • 三大机器学习框架对比:TensorFlow、PyTorch与Scikit-Learn