项目代码链接

https://gitee.com/PanGuanQing/oss-file-upload-demo.git

依赖

<!-- 阿里云oss依赖 -->
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.8.1</version>
</dependency>
UploadController
import com.example.ossuploaddemo.utils.OSSUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.security.SecureRandom;
import java.text.SimpleDateFormat;
import java.util.Date;@RestController
public class UploadController {@Autowiredprivate OSSUtil ossUtil;@RequestMapping("/upload")public String upload(MultipartFile file) throws IOException {String imgUrl = "";SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");// 最后上传生成的文件名String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg";// oss中的文件夹名String objectName = sdf.format(new Date()) + "/" + finalFileName;// 上传ossossUtil.uploadFile2OSS(file.getInputStream(), objectName);//获取文件的URl地址imgUrl = ossUtil.getImgUrl(objectName);return imgUrl;}
}
OSSUtil
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.PutObjectResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;@Slf4j
@Component
public class OSSUtil {private static final String endpoint = "oss-cn-beijing.aliyuncs.com";private static final String accessKeyId = "xxxxxx";private static final String accessKeySecret = "xxxxxx";private static final String bucketName = "pan-guan-qing";private static final String FOLDER = "image/";public static OSS getOSSClient() {return new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);}/*** 获得图片路径** @param fileUrl* @return*/public String getImgUrl(String fileUrl) {System.out.println(fileUrl);if (!StringUtils.isEmpty(fileUrl)) {return this.getUrl(this.FOLDER + fileUrl);}return "";}/*** 上传到OSS服务器 如果同名文件会覆盖服务器上的** @param instream 文件流* @param fileName 文件名称 包括后缀名* @return 出错返回"" ,唯一MD5数字签名*/public String uploadFile2OSS(InputStream instream, String fileName) {String ret = "";try {OSS ossClient = getOSSClient();// 创建上传Object的MetadataObjectMetadata objectMetadata = new ObjectMetadata();objectMetadata.setContentLength(instream.available());objectMetadata.setCacheControl("no-cache");objectMetadata.setContentType(getContentType(fileName.substring(fileName.lastIndexOf("."))));objectMetadata.setHeader("Pragma", "no-cache");// 上传文件PutObjectResult putResult = ossClient.putObject(bucketName, FOLDER + fileName, instream, objectMetadata);ret = putResult.getETag();} catch (IOException e) {log.error(e.getMessage(), e);} finally {try {if (instream != null) {instream.close();}} catch (IOException e) {e.printStackTrace();}}return ret;}/*** 通过文件名判断并获取OSS服务文件上传时文件的contentType** @param filenameExtension 文件名* @return 文件的contentType*/public static final String getContentType(String filenameExtension) {if (filenameExtension.equalsIgnoreCase(".bmp")) {return "application/x-bmp";}if (filenameExtension.equalsIgnoreCase(".gif")) {return "image/gif";}if (filenameExtension.equalsIgnoreCase(".jpeg") ||filenameExtension.equalsIgnoreCase(".jpg") ||filenameExtension.equalsIgnoreCase(".png")) {return "image/jpg";}if (filenameExtension.equalsIgnoreCase(".html")) {return "text/html";}if (filenameExtension.equalsIgnoreCase(".txt")) {return "text/plain";}if (filenameExtension.equalsIgnoreCase(".vsd")) {return "application/vnd.visio";}if (filenameExtension.equalsIgnoreCase(".pptx") ||filenameExtension.equalsIgnoreCase(".ppt")) {return "application/vnd.ms-powerpoint";}if (filenameExtension.equalsIgnoreCase(".docx") ||filenameExtension.equalsIgnoreCase(".doc")) {return "application/msword";}if (filenameExtension.equalsIgnoreCase(".xla") ||filenameExtension.equalsIgnoreCase(".xlc") ||filenameExtension.equalsIgnoreCase(".xlm") ||filenameExtension.equalsIgnoreCase(".xls") ||filenameExtension.equalsIgnoreCase(".xlt") ||filenameExtension.equalsIgnoreCase(".xlw")) {return "application/vnd.ms-excel";}if (filenameExtension.equalsIgnoreCase(".xlsx")) {return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";}if (filenameExtension.equalsIgnoreCase(".xml")) {return "text/xml";}if (filenameExtension.equalsIgnoreCase(".pdf")) {return "application/pdf";}if (filenameExtension.equalsIgnoreCase(".zip")) {return "application/zip";}if (filenameExtension.equalsIgnoreCase(".tar")) {return "application/x-tar";}if (filenameExtension.equalsIgnoreCase(".avi")) {return "video/avi";}if (filenameExtension.equalsIgnoreCase(".mp4")) {return "video/mpeg4";}if (filenameExtension.equalsIgnoreCase(".mp3")) {return "audio/mp3";}if (filenameExtension.equalsIgnoreCase(".mp2")) {return "audio/mp2";}// 默认下载
//        return "application/octet-stream";return "image/jpg";}/*** 获得url链接** @param key* @return*/public String getUrl(String key) {OSS ossClient = getOSSClient();// 图片有效期10年Date expiration = new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10);// 生成URLURL url = ossClient.generatePresignedUrl(bucketName, key, expiration);System.out.println("url: "+url);if (url != null) {String host = "https://" + url.getHost() + url.getPath();//System.out.println("host: "+host);return url.toString();}return "";}
}
 上传成功

oss文件上传demo (精简版通用)相关推荐

  1. 轻松搞定阿里OSS文件上传和图片下载

    轻松搞定阿里OSS文件上传和图片下载 目录 1. 阿里云oss账号准备   1.1 注册阿里云账号,并开通OSS存储服务   1.2 创建RAM子用户并使用子账户的AccessKeyId和Access ...

  2. OSS文件上传(页面直传)

    [前言] 近段时间在写一个文件上传的小功能,,公司的老项目实际已经有上传功能,,但是经理说在上传大文件的时候失败几率很大,,于是就仔仔细细的看了下老系统的文件上传的写法,在看了其写法之后决定重新整理一 ...

  3. Java学习踩坑:阿里云OSS文件上传前端通过路径获取报403错误

    错误还原:我在做OSS文件上传头像时,发现头像的图片文件可以上传成功,也可以返回文件的路径.但是前端在拿着后端返回的文件图片路径去访问这个图片时,Response中的错误码为403.找了一下网上的资料 ...

  4. aliyun oss 文件上传 java.net.SocketTimeoutException Read timed out 问题分析及解决

    aliyun oss 文件上传 java.net.SocketTimeoutException Read timed out 问题分析及解决 参考文章: (1)aliyun oss 文件上传 java ...

  5. php vsftpd文件上传类,php ftp文件上传函数(基础版)

    php ftp文件上传函数(基础版) 复制代码 代码如下: // 定义变量 $local_file = 'local.zip'; $server_file = 'server.zip'; // 连接F ...

  6. js 导出pdf上传至oss_js实现oss文件上传及一些问题

    关于兼容性问题,ie8以下的可以使用4.x的版本 一.引入sdk和jq 二.基本配置 var client =newOSS.Wrapper({ region:'', accessKeyId:'', a ...

  7. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  8. java 中传输文件的代码_java文件上传Demo(必看篇)

    说到文件上传我们要做到: 1.引入两个包:commons-fileupload-1.2.1.jar和commons-io-1.3.2.jar 2.将form改为上传文件模式:enctype=" ...

  9. Springboot 搭建oss文件上传服务器

    1.登录阿里云官网 https://www.aliyun.com/?spm=5176.8466032.top-nav.dlogo.724e1450B4jI0X 2.选择控制台 3. 找到对象存储oss ...

最新文章

  1. 了解这些,你就可以在Spring启动时为所欲为了
  2. 相关分析在微生物生态学中的应用与误用
  3. struts2对action的搜索规则
  4. 分享几个vs code 的几个插件
  5. flex 文字竖排_flex button字竖排展示
  6. 编辑xml文件时不能自动提示问题的解决
  7. bashrc文件中环境变量配置错误,导致linux命令无法正常使用的解决方案
  8. JAVA 成员访问权限修饰符
  9. 北大计算机学院冯岩松,冯岩松__北京理工大学机电学院
  10. mysql optimize 参数查看_Mysql High Performance:Optimize Setting
  11. Spring MVC初见面
  12. SpringBoot项目中注解的含义
  13. 十大免费DNS域名解析服务-稳定,可靠,好用的免费DNS服务
  14. signature=99d87437cab1487c89a59a65cc379430,剖析根据汉字转拼音的JQuery插件源码
  15. 2.try、catch、finally执行顺序 以及final、finally和finalize的区别
  16. RK3399平台开发系列讲解(USB网卡)5.47、USBNET驱动模型
  17. C语言农历天干地支,求思路。农历年月日时推天干地支
  18. 这次彻底读透 Redis
  19. LAN8742 教程(2) 数据手册 中文翻译(2)
  20. 神奇的魔术师——简单工厂模式

热门文章

  1. 漏洞扫描工具-Nikto
  2. javax.net.ssl.SSLPeerUnverifiedException: Hostname 10.1.82.151 not verified android怎么信任证书...
  3. Oracle分页查询优化
  4. 【TA-霜狼_may-《百人计划》】1.4 PC手机图形API介绍
  5. Android_控制闪光灯
  6. 面向对象的基础-抽象
  7. 测试开发干货:records让你优雅的操作数据库
  8. QtVtk-025-QChartTable
  9. Ubuntu使用Wine安装钉钉、微信、QQ等Windows软件
  10. 各大前端巨头反爬虫策略