springboot上传文件到OSS

前提声明,文章借鉴了https://blog.csdn.net/wonder_dog/article/details/81152307#commentsedit博客,

大神在我没有思路的时候提供了最简洁明了的教程,话不多说:写代码吧

1.首先依赖:

 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>${oss.version}</version>
</dependency>

2.配置oss必备属性,这都是阿里云要求的:

他有个桶机制与存入阿里云的必备条件,带着这些条件就能进行上传

aliyun:oss:access-id:   你的idaccess-key:  你的keybucket:      你的buketendpoint:    你的endpointdir:         设置文件存放文件夹 随便写  上传自动生成expire:      失效时间

写完配置 你需要一个类进行接收,

这里用了idea的一个插件 lombk ,使用data注解 不写getset方法了

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;@Configuration
@ConfigurationProperties("aliyun.oss")
@Data
public class AliyunOssProperties {private String accessId;private String accessKey;private String bucket;private String endpoint;private String dir;private Integer maxSize = Integer.valueOf(1);private Integer expire = Integer.valueOf(30);private boolean secure = false;private String roleSessionName;public AliyunOssProperties() {}}

上传工具类:(这里就不讲了,主要还是关于Controller层的讲解)

Controller层:
整体思路:

1.Springmvc帮我们接受前端传递过来的文件

2.获取文件名

3.自定义文件名(这里其实就可以通过/来控制上传到OSS里的文件路径了)

4.将MultpaertFile格式转化成JAVA的File格式

5.调用OSS工具类上传,除了一些基础的必备参数,还需要File属性的文件和我们自定义的上传路径(也可以理解为我们自定义的图片格式)

6.删除在本地服务器的文件副本

 /** logo文件上传*/@PostMapping("/uploadFile")public String uploadBlog(@RequestParam("file") MultipartFile file) {//获取原始文件名String filename = file.getOriginalFilename();//判断文件是否为空try {File toFile = null;if (file!=null) {//拼接/logStringBuilder path = new StringBuilder("log/");//获取时间戳Date fileDate = new Date();StringBuilder fileName = new StringBuilder(String.valueOf(fileDate.getTime()));//获取时间文件夹,并且与时间戳进行拼接SimpleDateFormat dateFormatShow = new SimpleDateFormat("yyyyMMdd");String date = (dateFormatShow.format(new Date()));StringBuilder newName = new StringBuilder(date);//拼接/log/时间文件夹/时间戳path.append(newName.toString());path.append("/");path.append(fileName);//获取文件后缀名String filename3 = file.getOriginalFilename();String extName = filename3.substring(filename3.lastIndexOf(".") );path.append(extName);System.out.println(path);// 将前面拼接的路径与文件名后缀进行拼接// 获得类似这样的结果/log/20190517/1558074106768.pngString yuming1 = path.toString();//将springmvc的MultipartFile类型转换成File类型//并且获取输出流将传进来的文件以流的方式写入我们新建的File类型文件File newFile = new File(filename);FileOutputStream os = new FileOutputStream(newFile);os.write(file.getBytes());//记得关流os.close();// file.transferTo(newFile);这是另一个方法,上面的是通过java流的方法,这个是springmvc的方法,效率更高// 调用阿里云的工具类上传到OSS//这个工具类只需要我们传参就好,而我们所需要的路径,就是域名+我们之前自定义的阿里云里的文件夹路径//所以这个工具类是不会返回url的,图片的访问地址就是域名+我们之前自定义拼接的阿里云的文件夹路径//网上还有其他工具类,封装的好,这里只是提供一种实现思路OSSUploadUtil.uploadFile(ali_endpoint,ali_accesskey_id,ali_accesskey_secret,ali_logstorage,newFile,yuming1);// 删除上传的文件,我们这种方法上传文件会在本地服务器留下一个文件副本,需要调用上传方法进行删除File file1=new File(filename);String s = file1.getAbsolutePath();DeleteFileUtil.delete(s);//http://你们公司跟阿里云申请的域名 拼接上我们之前自定义的文件上传路径 /log/20190517/1218209821212.jpg//拼接域名:StringBuilder yuming= new StringBuilder("http://阿里云发给你们公司的域名前缀/");//再拼接你自定义的文件存储路径yuming.append(yuming1);//这样返回给前端的就是直接能访问的url了return (yuming.toString());}return FALSE;}catch (Exception ex) {ex.printStackTrace();return FALSE;}}
}

删除上传图片后存在本地服务器的图片的工具类:

/*** 删除文件和目录**/
public class DeleteFileUtil {/*** 删除文件,可以是文件或文件夹** @param fileName*            要删除的文件名* @return 删除成功返回true,否则返回false*/public static boolean delete(String fileName) {File file = new File(fileName);if (!file.exists()) {System.out.println("删除文件失败:" + fileName + "不存在!");return false;} else {if (file.isFile())return deleteFile(fileName);elsereturn deleteDirectory(fileName);}}/*** 删除单个文件** @param fileName*            要删除的文件的文件名* @return 单个文件删除成功返回true,否则返回false*/public static boolean deleteFile(String fileName) {File file = new File(fileName);// 如果文件路径所对应的文件存在,并且是一个文件,则直接删除if (file.exists() && file.isFile()) {if (file.delete()) {System.out.println("删除单个文件" + fileName + "成功!");return true;} else {System.out.println("删除单个文件" + fileName + "失败!");return false;}} else {System.out.println("删除单个文件失败:" + fileName + "不存在!");return false;}}/*** 删除目录及目录下的文件** @param dir*            要删除的目录的文件路径* @return 目录删除成功返回true,否则返回false*/public static boolean deleteDirectory(String dir) {// 如果dir不以文件分隔符结尾,自动添加文件分隔符if (!dir.endsWith(File.separator))dir = dir + File.separator;File dirFile = new File(dir);// 如果dir对应的文件不存在,或者不是一个目录,则退出if ((!dirFile.exists()) || (!dirFile.isDirectory())) {System.out.println("删除目录失败:" + dir + "不存在!");return false;}boolean flag = true;// 删除文件夹中的所有文件包括子目录File[] files = dirFile.listFiles();for (int i = 0; i < files.length; i++) {// 删除子文件if (files[i].isFile()) {flag = DeleteFileUtil.deleteFile(files[i].getAbsolutePath());if (!flag)break;}// 删除子目录else if (files[i].isDirectory()) {flag = DeleteFileUtil.deleteDirectory(files[i].getAbsolutePath());if (!flag)break;}}if (!flag) {System.out.println("删除目录失败!");return false;}// 删除当前目录if (dirFile.delete()) {System.out.println("删除目录" + dir + "成功!");return true;} else {return false;}}public static void main(String[] args) {//  // 删除单个文件
//  String file = "c:/test/test.txt";
//  DeleteFileUtil.deleteFile(file);
//  System.out.println();// 删除一个目录String dir = "D:/home/web/upload/upload/files";DeleteFileUtil.deleteDirectory(dir);
//  System.out.println();
//  // 删除文件
//  dir = "c:/test/test0";
//  DeleteFileUtil.delete(dir);}}

springboot上传文件到阿里云相关推荐

  1. 微信小程序直接上传文件到阿里云OSS组件封装

    微信小程序直接上传文件到OSS 1. 封装公共方法 在根目录utils目录新建一个upload文件夹: // utils/upload/base64.jsvar base64EncodeChars = ...

  2. mac SCp上传文件到阿里云服务器centos

    1.mac链接远程阿里云服务器centos命令: ssh -A -p 22 root@ip 2.mac上传文件到阿里云centos: 3.阿里云服务器weapps下文件删除命令: 4.上传文件相关 m ...

  3. java上传文件至阿里云oss工具类

    第一步:引入oss maven坐标 <dependency><groupId>com.aliyun.oss</groupId><artifactId>a ...

  4. 上传文件到阿里云linux服务器

    上传文件到阿里云linux服务器 安装Putty软件(用来连接阿里云服务器的一款软件,里面有用来上传文件到服务器的可执行文件) 参考以下网址: https://help.aliyun.com/docu ...

  5. Android(安卓)上传文件到阿里云点播,阿里云点播转码

    Android(安卓)上传文件到阿里云点播,阿里云点播转码 文章目录 Android(安卓)上传文件到阿里云点播,阿里云点播转码 一:登录阿里云点播平台配置添加转码模板组 1:需要什么参数,可自行填写 ...

  6. 上传文件到阿里云OSS对象存储,查询访问地址,删除文件

    一:pom添加以来jar <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun ...

  7. Springboot上传视频到阿里云(视频点播)和aliyun-java-sdk-vod依赖报红问题

    一.pom.xm中导入依赖 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-ja ...

  8. 【微信小程序】上传文件到阿里云OSS

    小程序上传文件到OSS也是利用OSS提供的PostObject接口来实现表单文件上传到OSS 步骤1:配置Bucket跨域访问 客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请 ...

  9. 小程序上传文件到阿里云oss

    本文仅举例上传图片和上传视频! 准备工作: 需要引入的js文件:https://download.csdn.net/download/impossible1994727/12328614 参考文档:h ...

最新文章

  1. mysql怎么禁止远程连接_mysql禁止远程访问
  2. C++primer CH12智能指针
  3. ISO8583报文格式分析
  4. handler和thread之间如何传输数据_HTTP和TCP之间的关系
  5. 容器技术Docker K8s 13 容器服务Kubernetes版ACK详解-使用镜像快速创建有状态应用
  6. 英文java简历模板下载_java软件工程师英文简历模板下载
  7. LookupError(‘unknown encoding: GB2312‘)
  8. python josn数据解析
  9. 二十四节气—立秋,文案、海报分享。
  10. Openssl win8 用法
  11. 族蚂网针对宠物网站建设有哪些新体验
  12. 删除win10 qaa输入法
  13. 计算机基础常用缩略语
  14. Google Earth Engine(GEE)——Landsat ETM+ to OLI 协调
  15. Physically Based Render初学者PBR整理
  16. SPI控制MS5614T
  17. 【编译原理】语义分析
  18. 科研论文citespace下载
  19. 扎克伯格上手演示四款VR头显原型机,Meta透露元宇宙「家底」
  20. 初入Java测试员之路

热门文章

  1. 一文带你了解外贸海关数据
  2. 【Gorho】springboot整合Shiro+jwt 前后端分离 超级详细的shiro+jwt鉴权过程
  3. Jmeter书中不会教你的(94)——将时间戳转换为日期格式
  4. 【VUE】学习记录一
  5. 钉钉和微信通过h5服务器对接,【案例】钉钉/企业微信/在线、工单等集成对接 | 网易七鱼...
  6. 电子学会python三级笔记
  7. 移动应用开发实践-Task5-通过Json获取城市列表
  8. ROS Navigation之map_server完全详解
  9. mysql怎么添加查询时间限制_mysql如何限制sql查询时间,
  10. 命名空间的问题导致No transform from [..._link] to [base_link]