SpringBoot 整合七牛云上传图片
在个人的一个项目中有一些需求需要用到图片文件上传,那么相比于阿里云我选择了七牛云,主要还是想白嫖,哈哈。
七牛云每个月有一定的免费额度,对于目前我的项目来说还是足够用的
阿里云OSS个人理解是上传不收费,但是访问就会产生费用
开通七牛云
注册登录七牛云:https://sso.qiniu.com/
进入管理控制台
选择资源管理→新建存储空间
进入空间管理之后,点击【+新建空间】
右侧设置【空间名称】,【区域】,【访问控制】
空间创建完之后,七牛云会给一个具有一个月时限的测试域名,也可以绑定备案的域名。
到这里,七牛云的对象存储空间就设置成功了。
七牛云开发文档
官方文档地址:https://developer.qiniu.com/kodo/1239/java
点击【文档】→【开发者中心】
点击【对象存储】
就可以看到官方文档了
SpringBoot 上传图片
获取七牛云密钥
进入七牛云控制台
点击【头像】→【密钥管理】
创建密钥,复制保存,下面要用
导入依赖
<!--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
跳转到 upload.html 的接口
@Controller public class PageController {@RequestMapping("/upload")public String to(){return "upload";}}
图片服务接口
@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")
一样
测试
访问 http://localhost:8002/upload
选择图片,点击提交
上传成功
查看七牛云
到这里就结束了,感谢大家。
SpringBoot 整合七牛云上传图片相关推荐
- Springboot整合七牛云
springboot整合七牛云 1.当我在做一个简单的后台管理系统时候· 需要制作一个接口来上传自己的图片 为此需要配合springboot整合 七牛云 1.上传工具类 (${qiniu.access ...
- SpringBoot(24) 整合七牛云实现文件上传
一.前言 本文将基于springboot2.1.8.RELEASE整合七牛云实现文件上传 本文参考 https://www.keppel.fun/articles/2019/02/27/1551262 ...
- 后端七牛云上传图片流程以及后续异常javax.net.ssl.SSLHandshakeException处理
一.sprinboot整合七牛云 1.先导入依赖 <dependency><groupId>com.qiniu</groupId><artifactId> ...
- 使用七牛云上传图片时出现Network error during preQuery和运行时出现okhttp的问题
问题描述 1.使用七牛云上传图片时出现Network error during preQuery,但网络正常 原因分析:排除网络原因,尝试网络配置方向调整 Configuration configur ...
- 七牛云上传图片和视频
先说本文主要的重点: 七牛云上传图片(包括从相机获取的和从相册获取的) 七牛云上传视频 8.0手机调起相机 都会进行描述 多图片和多视频上传 获取图片后缀 ...
- 七牛云 上传图片到七牛云并返回图片URL
七牛云 上传图片到七牛云并返回图片URL 鸣谢'追逐盛夏流年':https://blog.csdn.net/j1231230/article/details/80061834 在开发项目的时候,经常会 ...
- Java实现七牛云上传图片、读取图片链接
Java后端实现七牛云上传图片.读取图片链接 添加依赖 <!--七牛云sdk--><dependency><groupId>com.qiniu</groupI ...
- 七牛云上传图片报错处理
{ResponseInfo:com.qiniu.http.Response@62bd765,status:400, reqId:d4kAAACMt2hWMSEW, xlog:X-Log, xvia:, ...
- python对接七牛云上传图片代码,可运行
python对接七牛云上传图片,可运行 一.准备工作 注册七牛云获取: 1.Access Key(注册认证后自动生成) 2.Secret Key(注册认证后自动生成) 3.空间名称:ihome(创建空 ...
最新文章
- Python3.5源码分析-垃圾回收机制
- matlab图像处理——平滑滤波
- django后台多页面分页逻辑python代码
- php负载均衡慕课网,Nginx实现负载均衡
- DataSet 添加数据集、行、列、主键和外键等操作示例
- [转载]与索引相关的概念---聚簇因子
- xftp传输文件报错
- 图像处理——采样与量化
- Apex弹窗闪退报错问题解决方案清晰讲解(系统软件层面解决,已亲测可行)
- 中望cad自定义快捷键命令_中望cad常用快捷键及命令
- 在LR字符串中交换相邻字符
- 俄勒冈之旅_欢迎美好的一天俄勒冈观众-消灭糖尿病2007
- 不要因为英语和数学而害怕学习编程.
- 五伤四损 - 万全《养生四要》
- B站疯狂破圈 “后浪”们将会把B站推向何处?​
- redis cluster 集群 HA 原理和实操(史上最全、面试必备)
- 德国交通标志检测识别数据集
- win11右击文件夹假死
- windows 2003中iis写入事件日志的问题。
- 功能点算法及在软件测试中的应用Part3
热门文章
- ESP32与Xbox手柄的UART通信测试,基于Arduino框架和pyserial+pygame
- Springboot毕设项目老年人营养膳食咨询平台0h520(java+VUE+Mybatis+Maven+Mysql)
- CentOS7安装autojump
- 微信开发 php 下载图片不显示,微信jssdk接口得到的图片显示问题
- url和html地址,url是什么地址
- html设置自动滚动条,css滚动条设置
- python gui按顺序显示图片_python tkinter GUI绘制,以及点击更新显示图片代码
- 简单的Canvas刮刮乐带动画效果的实例
- word中如何使用快捷键将大写字母转换为小写字母
- android通知!腾讯、阿里Android高级面试真题汇总,我先收藏为敬