话不多说,直接上干货

官方文档:https://help.aliyun.com/product/31815.html?spm=a2c4g.11186623.6.540.539d28bca7ZyUR

1.首先引入pom依赖

     <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.8.0</version></dependency>

2.文件上传代码

Controller层:

  public String upload(MultipartFile file){return fileUploadService.upload(file);}

Service层:

    String upload(MultipartFile multipartFile);

ServiceImpl层:

 @Overridepublic String upload(MultipartFile multipartFile){// 定义你的BucketNameString bucketName = "<yourBucketName>";String fileAllName = multipartFile.getOriginalFilename();String fileType = fileAllName.substring(fileAllName.lastIndexOf(".") + 1);String uuid = UUID.randomUUID().toString().replaceAll("-","");filePath = filePath + "/" +uuid +"."+fileType;String url=endpoint.replaceFirst("http://","http://"+bucketName +".")+"/"+filePath; String contentType = OssUtils.getContentType(fileAllName);//保存本地File file = XmlUtil.ossUpload(multipartFile);try {//上传ossOssUtils.ossUpload(filePath, file,contentType);}catch (Exception e){e.printStackTrace();System.out.println("上传失败");}//删除本地文件XmlUtil.deleteFile(file);return url;}

3.工具类

3.1 OssUtils:


public class OssUtils {// 创建存储空间,Endpoint以杭州为例,其它Region请按实际情况填写。private String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";private String accessId = "<yourAccessKeyId>";private String accessKey = "<yourAccessKeySecret>";private String privateDomain = "<yourPrivateDomain >";private String privateBucket = "<yourBucketName>";public void ossUpload(String fileName, File file, String contentType) {try {OSS ossClient = new OSSClientBuilder().build(endpoint, accessId, accessKey);ObjectMetadata meta = new ObjectMetadata();meta.setContentType(contentType);UploadFileRequest uploadFileRequest = new UploadFileRequest(privateBucket, fileName);// 指定上传的本地文件。uploadFileRequest.setUploadFile(file.toString());// 指定上传并发线程数,默认为1。uploadFileRequest.setTaskNum(5);// 指定上传的分片大小,范围为100KB~5GB,默认为文件大小/10000。uploadFileRequest.setPartSize(1 * 1024 * 1024);// 开启断点续传,默认关闭。uploadFileRequest.setEnableCheckpoint(true);uploadFileRequest.setCheckpointFile("uploadFile.ucp");// 文件的元数据。uploadFileRequest.setObjectMetadata(meta);// 设置上传成功回调,参数为Callback类型。//uploadFileRequest.setCallback("<yourCallbackEvent>");// 断点续传上传。ossClient.uploadFile(uploadFileRequest);// 关闭OSSClient。ossClient.shutdown();} catch (FileNotFoundException e) {e.printStackTrace();} catch (Throwable throwable) {throwable.printStackTrace();}}/*** 通过文件名判断并获取OSS服务文件上传时文件的contentType*/public String getContentType(String fileName) {String fileExtension = fileName.substring(fileName.lastIndexOf("."));if (".bmp".equalsIgnoreCase(fileExtension)) {return "image/bmp";}if (".gif".equalsIgnoreCase(fileExtension)) {return "image/gif";}if (".jpeg".equalsIgnoreCase(fileExtension)) {return "image/jpeg";}if (".jpg".equalsIgnoreCase(fileExtension)) {return "image/jpg";}if (".png".equalsIgnoreCase(fileExtension)) {return "image/png";}if (".html".equalsIgnoreCase(fileExtension)) {return "text/html";}if (".txt".equalsIgnoreCase(fileExtension)) {return "text/plain";}if (".vsd".equalsIgnoreCase(fileExtension)) {return "application/vnd.visio";}if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {return "application/vnd.ms-powerpoint";}if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {return "application/msword";}if (".xml".equalsIgnoreCase(fileExtension)) {return "text/xml";}if (".mp4".equalsIgnoreCase(fileExtension)) {return "video/mp4";}if (".mp3".equalsIgnoreCase(fileExtension)) {return "audio/mp3";}return "text/html";}
}

3.2 XmlUtil:

public class XmlUtil {public static void deleteFile(File... files) {for (File file : files) {//logger.info("File:[{}]",file.getAbsolutePath());if (file.exists()) {file.delete();}}}public static File ossUpload(MultipartFile file) throws IOException {// 获取文件名String fileName = file.getOriginalFilename();// 获取文件后缀String prefix = fileName.substring(fileName.lastIndexOf("."));// 用uuid作为文件名,防止生成的临时文件重复File excelFile = File.createTempFile(UUID.randomUUID().toString(), prefix);// MultipartFile to Filefile.transferTo(excelFile);//程序结束时,删除临时文件return excelFile;}
}

PS: 没有写概念类的东西,建议看之前先看看官网文档哦,然后就能看懂代码啦,小伙伴们加油哦

阿里云OSS对象存储实现文件的上传,并返回访问路径相关推荐

  1. 阿里云OSS对象存储(文件上传与下载)宝宝级教程

    1.注册自己的阿里云账号 2.登录账号以后,进入主页面搜索"对象存储OSS 然后可以看到如下界面 立即购买,自己学习使用可以选择购买最小的存储空间,半年即可 管理控制台,购买了存储空间以后可 ...

  2. java oss 批量传输_阿里云OSS对象存储,服务端签名后直传阿里云OSS

    继续上一章文章,这次要操作的是,浏览器请求服务要到签名后直传给OSS对象存储. 1.写好服务端的方法,传给前台相应的密钥 @Resource OSSClient ossClient; @Value(& ...

  3. 阿里云OSS对象存储-图文详解

    阿里云OSS对象存储 认识OSS 一.创建Bucket 二.后台服务接口编写 三.接口测试 认识OSS 在实际的项目中,经常要用到上传图片的地方,阿里云的OSS对象存储,可以很好的将我们上传的图片存储 ...

  4. 阿里云OSS对象存储搭建网盘教程

    阿里云OSS对象存储高可靠数据存储服务,使用OSS对象存储搭建个人网盘或企业网盘,存储可靠性高下载不限速,当然阿里云推出了自家的网盘,码笔记分享使用OSS对象存储搭建个人网盘或企业网盘的方法: 使用O ...

  5. 【Typora图床设置】Typora图片上传和阿里云OSS对象存储

    问题描述 因为Typora是纯文本编辑器,所以无法导入图片,但是可以显示图片.换句话说,Typora文档中保存的图片实际上是图片的存储地址,Typora会根据这个地址来显示图片.我们在使用Typora ...

  6. 5分钟解决阿里云oss对象存储

    5分钟解决阿里云OSS对象存储 后附关键代码 启动代码如下: pom.xml里添加依赖 com.aliyun.oss aliyun-sdk-oss 2.8.3 1.建类AliyunOSSClientU ...

  7. Java使用阿里云OSS对象存储上传图片

    示例说明   该案例是OSS Java SDK的示例程序,您可以修改endpoint.accessKeyId.accessKeySecret.bucketName后直接运行. 本示例中的并不包括OSS ...

  8. 6、阿里云OSS对象存储手把手学习及企业使用方案

    文章目录 1.什么是分布式文件系统 2.图片存储解决方案 3.阿里云OSS对象存储 3.1.开通oss访问 3.2.购买服务 3.3.基本概念 3.4.创建一个bucket 3.5.创建AccessK ...

  9. 阿里云OSS——对象存储服务(工具)

    阿里云OSS--对象存储服务(工具) 一.依赖 二.yaml配置 三.OSS工具类 四.demo演示 4.1 SpringBoot启动类 4.2 Controller接口 4.3 swagger测试 ...

最新文章

  1. 是否会回到起点.回忆只能是回忆
  2. 关于service层、dao层,以及O/R Mapping之间的思考
  3. 现代密码学1.4--现代密码的三大原则
  4. HTTP 错误 403.14 - Forbidden Web 服务器被配置为不列出此目录的内容
  5. 微信小程序设置底部导航栏目方法
  6. PHP连接PGSQL
  7. 又踩.NET Core的坑:在同步方法中调用异步方法Wait时发生死锁(deadlock)
  8. 一张图看懂云栖大会·上海峰会重磅产品发布
  9. python在统计专业的应用_Python:使用Counter进行计数统计
  10. Ubuntu16.04实现Sphinx离线语音识别
  11. 20220307:力扣第283场周赛(上)
  12. CSDN在2017年度的若干“升级”
  13. HDOJ 1420 Prepared for New Acmer(DP)
  14. Onvif协议:门外汉理解ONVIF协议
  15. 看完Jeff Dean新论文,我再也不相信大厂的鬼话了
  16. 上传图片保存到mysql数据库并在网页上显示
  17. 程序员之路:Gmail邮箱客户端配置
  18. 在Redhat9上安装Oracle 9.2
  19. 云端服务器跑python代码,断开后台运行
  20. Office Powerpoint演示文档大瘦身

热门文章

  1. 手机游戏串号被封之后靠谱的解封方法
  2. linux虚拟机中安装geth
  3. 曲线积分与曲面积分总结_CFD理论扫盲03 向量微积分
  4. 详解python中for循环的_《详》字意思读音、组词解释及笔画数 - 新华字典 - 911查询...
  5. JEECMS v8 发布,java 开源 CMS 系统
  6. Revit剪贴板用法复制一样的楼层及构件一键剪切功能
  7. MySQL 服务正在启动 MySQL 服务无法启动解决办法
  8. 2的2.8次方用计算机怎么算,2.8 计算器的使用(含答案)
  9. python安装时选justme_详解Anaconda 的安装教程
  10. 南邮Android Studio应用高德地图API获取SHA1码