在个人的一个项目中有一些需求需要用到图片文件上传,那么相比于阿里云我选择了七牛云,主要还是想白嫖,哈哈。

  • 七牛云每个月有一定的免费额度,对于目前我的项目来说还是足够用的

  • 阿里云OSS个人理解是上传不收费,但是访问就会产生费用

开通七牛云

  1. 注册登录七牛云:https://sso.qiniu.com/

  2. 进入管理控制台

  3. 选择资源管理→新建存储空间

  4. 进入空间管理之后,点击【+新建空间】

  5. 右侧设置【空间名称】,【区域】,【访问控制】

  6. 空间创建完之后,七牛云会给一个具有一个月时限的测试域名,也可以绑定备案的域名。

  7. 到这里,七牛云的对象存储空间就设置成功了。

七牛云开发文档

官方文档地址:https://developer.qiniu.com/kodo/1239/java

  1. 点击【文档】→【开发者中心】

  2. 点击【对象存储】

  3. 就可以看到官方文档了

SpringBoot 上传图片

获取七牛云密钥

  1. 进入七牛云控制台

  2. 点击【头像】→【密钥管理】

  3. 创建密钥,复制保存,下面要用

导入依赖

<!--qiniu依赖-->
<dependency><groupId>com.qiniu</groupId><artifactId>qiniu-java-sdk</artifactId><version>7.2.28</version>
</dependency>
<!--thymeleaf依赖-->
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

配置 application.yml

spring:freemarker:suffix: .htmlcache: falseservlet:multipart:max-file-size: 20MBmax-request-size: 20MBqiniu:accessKey: 申请的 AccessKey,AKaccessSecretKey: 申请的 SecretKey,SKbucket: 创建的空间名imageUrl: 域名

编写 ImageUtils

图片的上传工具类

@Component
public class ImageUtils {@Value("${qiniu.accessKey}")private String accessKey;@Value("${qiniu.accessSecretKey}")private String accessSecretKey;@Value("${qiniu.bucket}")private String bucket;@Value("${qiniu.imageUrl}")private String url;/*** 处理多文件* @param multipartFiles* @return*/public Map<String, List<String>> uploadImages(MultipartFile[] multipartFiles){Map<String,List<String>> map = new HashMap<>();List<String> imageUrls = new ArrayList<>();for(MultipartFile file : multipartFiles){imageUrls.add(uploadImageQiniu(file));}map.put("imageUrl",imageUrls);return map;}/*** 上传图片到七牛云* @param multipartFile* @return*/private String uploadImageQiniu(MultipartFile multipartFile){try {//1、获取文件上传的流byte[] fileBytes = multipartFile.getBytes();//2、创建日期目录分隔SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");String datePath = dateFormat.format(new Date());//3、获取文件名String originalFilename = multipartFile.getOriginalFilename();String suffix = originalFilename.substring(originalFilename.lastIndexOf("."));String filename = datePath+"/"+UUID.randomUUID().toString().replace("-", "")+ suffix;//4.构造一个带指定 Region 对象的配置类//Region.huabei(根据自己的对象空间的地址选Configuration cfg = new Configuration(Region.huabei());UploadManager uploadManager = new UploadManager(cfg);//5.获取七牛云提供的 tokenAuth auth = Auth.create(accessKey, accessSecretKey);String upToken = auth.uploadToken(bucket);uploadManager.put(fileBytes,filename,upToken);return url+filename;} catch (IOException e) {e.printStackTrace();}return null;}
}

编写 Controller

  1. 跳转到 upload.html 的接口

    @Controller
    public class PageController {@RequestMapping("/upload")public String to(){return "upload";}}
    
  2. 图片服务接口

    @RestController
    @RequestMapping("/api")
    public class ImageController {@Autowiredprivate ImageUtils imageUtils;@PostMapping("/image/upload")public ResponseResult uploadImage(@RequestParam(value = "file",required = false) MultipartFile[] multipartFile){if(ObjectUtils.isEmpty(multipartFile)){return new ResponseResult(HttpResponseStatus.OK.code(), "请选择图片");}Map<String, List<String>> uploadImagesUrl = imageUtils.uploadImages(multipartFile);return new ResponseResult(HttpResponseStatus.OK.code(), "上传成功",uploadImagesUrl);}}
    

    注:ResponseResult 为响应结果封装类,自定义即可。

编写前端上传页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="http://localhost:8002/api/image/upload" method="post" enctype="multipart/form-data"><input type="file" name="file"><input type="submit">
</form>
</body>

注:<input type="file" name="file">的 name 值一定要和接口的 @RequestParam("file")一样

测试

  1. 访问 http://localhost:8002/upload

  2. 选择图片,点击提交

  3. 上传成功

  4. 查看七牛云


到这里就结束了,感谢大家。

SpringBoot 整合七牛云上传图片相关推荐

  1. Springboot整合七牛云

    springboot整合七牛云 1.当我在做一个简单的后台管理系统时候· 需要制作一个接口来上传自己的图片 为此需要配合springboot整合 七牛云 1.上传工具类 (${qiniu.access ...

  2. SpringBoot(24) 整合七牛云实现文件上传

    一.前言 本文将基于springboot2.1.8.RELEASE整合七牛云实现文件上传 本文参考 https://www.keppel.fun/articles/2019/02/27/1551262 ...

  3. 后端七牛云上传图片流程以及后续异常javax.net.ssl.SSLHandshakeException处理

    一.sprinboot整合七牛云 1.先导入依赖 <dependency><groupId>com.qiniu</groupId><artifactId> ...

  4. 使用七牛云上传图片时出现Network error during preQuery和运行时出现okhttp的问题

    问题描述 1.使用七牛云上传图片时出现Network error during preQuery,但网络正常 原因分析:排除网络原因,尝试网络配置方向调整 Configuration configur ...

  5. 七牛云上传图片和视频

    先说本文主要的重点: 七牛云上传图片(包括从相机获取的和从相册获取的)    七牛云上传视频       8.0手机调起相机        都会进行描述    多图片和多视频上传    获取图片后缀 ...

  6. 七牛云 上传图片到七牛云并返回图片URL

    七牛云 上传图片到七牛云并返回图片URL 鸣谢'追逐盛夏流年':https://blog.csdn.net/j1231230/article/details/80061834 在开发项目的时候,经常会 ...

  7. Java实现七牛云上传图片、读取图片链接

    Java后端实现七牛云上传图片.读取图片链接 添加依赖 <!--七牛云sdk--><dependency><groupId>com.qiniu</groupI ...

  8. 七牛云上传图片报错处理

    {ResponseInfo:com.qiniu.http.Response@62bd765,status:400, reqId:d4kAAACMt2hWMSEW, xlog:X-Log, xvia:, ...

  9. python对接七牛云上传图片代码,可运行

    python对接七牛云上传图片,可运行 一.准备工作 注册七牛云获取: 1.Access Key(注册认证后自动生成) 2.Secret Key(注册认证后自动生成) 3.空间名称:ihome(创建空 ...

最新文章

  1. Python3.5源码分析-垃圾回收机制
  2. matlab图像处理——平滑滤波
  3. django后台多页面分页逻辑python代码
  4. php负载均衡慕课网,Nginx实现负载均衡
  5. DataSet 添加数据集、行、列、主键和外键等操作示例
  6. [转载]与索引相关的概念---聚簇因子
  7. xftp传输文件报错
  8. 图像处理——采样与量化
  9. Apex弹窗闪退报错问题解决方案清晰讲解(系统软件层面解决,已亲测可行)
  10. 中望cad自定义快捷键命令_中望cad常用快捷键及命令
  11. 在LR字符串中交换相邻字符
  12. 俄勒冈之旅_欢迎美好的一天俄勒冈观众-消灭糖尿病2007
  13. 不要因为英语和数学而害怕学习编程.
  14. 五伤四损 - 万全《养生四要》
  15. B站疯狂破圈 “后浪”们将会把B站推向何处?​
  16. redis cluster 集群 HA 原理和实操(史上最全、面试必备)
  17. 德国交通标志检测识别数据集
  18. win11右击文件夹假死
  19. windows 2003中iis写入事件日志的问题。
  20. 功能点算法及在软件测试中的应用Part3

热门文章

  1. ESP32与Xbox手柄的UART通信测试,基于Arduino框架和pyserial+pygame
  2. Springboot毕设项目老年人营养膳食咨询平台0h520(java+VUE+Mybatis+Maven+Mysql)
  3. CentOS7安装autojump
  4. 微信开发 php 下载图片不显示,微信jssdk接口得到的图片显示问题
  5. url和html地址,url是什么地址
  6. html设置自动滚动条,css滚动条设置
  7. python gui按顺序显示图片_python tkinter GUI绘制,以及点击更新显示图片代码
  8. 简单的Canvas刮刮乐带动画效果的实例
  9. word中如何使用快捷键将大写字母转换为小写字母
  10. android通知!腾讯、阿里Android高级面试真题汇总,我先收藏为敬