一、需求分析

文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写的是基于阿里云的。

二:环境搭建

我这里是用的Springboot.Thymeleaf插件,为了在html页面实现文件上传功能。

1、首先开通阿里云OSS存储,这里不多说了。

2、创建一个Bucket


这个bucket名称是等下参数里面要用到的。区域可以选择你那边的区域。

3、创建好之后返回刚才的页面,点击Access Key,来获取accessKeyId、accessKeySecret这两个参数


4、Maven依赖(Thymeleaf、OSS)

   <!-- 阿里云OSS--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>2.4.0</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency>

5、新建一个UpLoadController.java

*** @descibe oss*/
@Controller
public class UpLoadController {private static final String TO_PATH = "upload";private static final String RETURN_PATH = "success";@Autowiredprivate AliyunOSSUtil aliyunOSSUtil;@RequestMapping("/toUpLoadFile")public String toUpLoadFile() {return TO_PATH;}/*** 文件上传*/@RequestMapping(value = "/uploadFile")public String uploadBlog(@RequestParam("file") MultipartFile file) {String filename = file.getOriginalFilename();System.out.println(filename + "==filename");try {if (file != null) {if (!"".equals(filename.trim())) {File newFile = new File(filename);FileOutputStream os = new FileOutputStream(newFile);os.write(file.getBytes());os.close();file.transferTo(newFile);// 上传到OSSString uploadUrl = aliyunOSSUtil.upLoad(newFile);}}} catch (Exception ex) {ex.printStackTrace();}return RETURN_PATH;}
}

6、新建AliyunOSSUtil.java

/*** @descibe oss*/
@Component
public class AliyunOSSUtil {private static final org.slf4j.Logger logger = LoggerFactory.getLogger(AliyunOSSUtil.class);/*** 上传文件*/public String upLoad(File file) {logger.info("------OSS文件上传开始--------" + file.getName());String endpoint = "你的endpoint ";    //这里endpoint 在你的bucket列表->点击你的bucket->点击概览中间就有,下面有截图System.out.println("获取到的Point为:" + endpoint);String accessKeyId = "你的accessKeyId ";    //accessKeyId 、accessKeySecret 上面有说到哪里获取String accessKeySecret = "你的accessKeySecret ";String bucketName = "你的bucketName ";  //刚才新建的bucket名称String fileHost = "你的fileHost ";   //在刚才新建的bucket下面新建一个目录,这就是那个目录的名称SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");String dateStr = format.format(new Date());// 判断文件if (file == null) {return null;}OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);try {// 判断容器是否存在,不存在就创建if (!client.doesBucketExist(bucketName)) {client.createBucket(bucketName);CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);client.createBucket(createBucketRequest);}// 设置文件路径和名称String fileUrl = fileHost + "/" + (dateStr + "/" + UUID.randomUUID().toString().replace("-", "") + "-" + file.getName());// 上传文件PutObjectResult result = client.putObject(new PutObjectRequest(bucketName, fileUrl, file));// 设置权限(公开读)client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);if (result != null) {logger.info("------OSS文件上传成功------" + "https://makeromance.oss-cn-hangzhou.aliyuncs.com/" + fileUrl);}} catch (OSSException oe) {logger.error(oe.getMessage());} catch (ClientException ce) {logger.error(ce.getErrorMessage());} finally {if (client != null) {client.shutdown();}}return null;}
}

获取endpoint:

7、新建upload.html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>【基于OSS的上传文件页面】</title><style type="text/css">* {margin: 0;padding: 0;}#group {position: absolute;left: 580px;}#submit {position: absolute;top: 140px;left: 580px;}</style>
</head>
<body>
<div align="center"><h2 style="color:orangered;">基于OSS的上传文件页面</h2>
</div>
<br/>
<form action="/uploadFile" enctype="multipart/form-data" method="post"><div class="form-group" id="group"><label for="exampleInputFile">File input</label><input type="file" id="exampleInputFile" name="file"></div><button type="submit" class="btn btn-default" id="submit">上传</button>
</form>
</body>
</html>

success.html:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>【文件上传成功页面】</title>
</head>
<body>
<div align="center"><h5>上传成功</h5><img src="https://makeromance.oss-cn-hangzhou.aliyuncs.com/langmanji/2020-05-27/3c7a040df2ad4f6ca5f6da47373c8773-xiazaierweima.jpg"/>
</div>
</body>
</html>

三、运行项目


选择一个文件点击上传:

提示上传成功,我们看下控制台:

输出的是我们文件上传的路径,然后我们看下我们阿里云OSS存储里面有没有数据:

发现已经有了,这就是一个SpringBoot基于阿里云OSS上传文件的例子。

SpringBoot整合阿里云OSS上传文件相关推荐

  1. springboot整合阿里云oss上传的方法示例

    这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...

  2. 第三方服务整合-阿里云OSS上传文件-填坑

    目录 如下,引入aliyun-oss失败: 原因: 解决方法 OssController 如下,引入aliyun-oss失败: com.alibaba.cloud:aliyun-oss-spring- ...

  3. SpringBoot集成阿里云OSS上传文件

    文章目录 前言 一.准备环境 1.在搜索框搜索 对象存储OSS 2.创建Bucket 3.找到开发相关信息 二.具体代码 1.Maven依赖 2.application.yml配置 3.AliOssP ...

  4. spring boot 整合 阿里云oss上传

    Spring Boot 整合 阿里云OSS上传 OSS申请和配置 1. 注册登录 2.开通以及配置 springboot整合使用 1. 进入我们springboot的项目中,导入oss相关依赖 2. ...

  5. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

  6. 阿里云OSS上传文件时,如何显示上传网速

    阿里云OSS上传文件时,如何显示上传网速 业务场景 用户上传时,网速很慢,或者在上传大文件时,虽然有进度条,但是动的很慢,或者不明显,用户会产生困惑. 所以就产生了一个显示网速的需求点. 实现方式 E ...

  7. Java实现阿里云OSS上传文件

    推荐:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.. 点击跳转到网站 1.准备工作:创建操作阿里云OSS许可证 阿里云官方文档 这里不再赘述,根据官方文档一步步的 ...

  8. 阿里云OSS上传文件设置请求头

    之前写过一篇发送文件消息的,原生input上传文件(聊天发送文件消息),这次的需求就是更改上传地址,使用阿里云OSS上传. 如果想了解阿里云对象存储OSS是如何使用的,请看阿里云存储对象OSS使用讲解 ...

  9. Springboot集成 阿里云OSS上传及下载

    文章目录 使用手册 maven依赖及环境配置 定义配置bean及OSS工具类 定义UploadController和DownloadController 下载接口优化为返回重定向oss路径 遇到的问题 ...

最新文章

  1. Python-time
  2. [导入]金山词霸2005精简版下载地址
  3. MPLS自身的优点所带来的网络便捷—Vecloud微云
  4. php 不存在给默认值,当属性不存在时,创建一个属性并给它一个默认值
  5. 生产环境中,如何防止服务器秘钥被盗取?
  6. mysql in 子查询优化_mysql in 子查询 容易优化
  7. 初探Openstack Neutron DVR
  8. LinuxCentos7 防火墙开放端口,查看状态,查看开放端口
  9. 【转载】asp.net core 入门
  10. Java - HashMap源码解析
  11. java哈希表实现_Java实现简单哈希表详细代码
  12. 前端性能优化 —— 起步篇(一)
  13. Java 算法刷题指南
  14. LOIC安全测试工具
  15. ubuntu20.04安装opencv4
  16. 用excel函数COUNTIF实现两列数据对比找出不同数据
  17. 阅读《吴军·硅谷来信》一年的回顾与思考
  18. 信息服务器在哪里打开,internet信息服务(lls)管理器在哪里打开
  19. 【zznu-2173】
  20. 《IT学生解惑手册》电子版免费下载!

热门文章

  1. java http 下载文件_JAVA通过HttpURLConnection 上传和下载文件的方法
  2. mysql 主主结构_高性能mysql主主架构
  3. [转载] JVM中对象的回收过程
  4. apachejmeter_java源码_自定义编写jmeter的Java测试代码
  5. learn opengl 中文_LearnOpenGL CN
  6. css中的换行符_如何使用CSS防止项目列表中的换行符?
  7. 人工智能ai 学习_人工智能中强化学习的要点
  8. 附录:更多有序集合操作命令
  9. 面试官 | 线程间是如何通信的?
  10. Python检查特定值是否包含在列表中