日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot整合阿里云OSS上传文件

發(fā)布時(shí)間:2025/3/12 javascript 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot整合阿里云OSS上传文件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、需求分析

文件上傳是一個(gè)非常常見的功能,就是通過IO流將文件寫到另外一個(gè)地方,這個(gè)地方可以是項(xiàng)目下的某個(gè)文件夾里,或者是本地電腦某個(gè)盤下面,還可以是云服務(wù)OSS里面,這里就是我要講到的OSS,我寫的是基于阿里云的。

二:環(huán)境搭建

我這里是用的Springboot.Thymeleaf插件,為了在html頁面實(shí)現(xiàn)文件上傳功能。

1、首先開通阿里云OSS存儲(chǔ),這里不多說了。

2、創(chuàng)建一個(gè)Bucket


這個(gè)bucket名稱是等下參數(shù)里面要用到的。區(qū)域可以選擇你那邊的區(qū)域。

3、創(chuàng)建好之后返回剛才的頁面,點(diǎn)擊Access Key,來獲取accessKeyId、accessKeySecret這兩個(gè)參數(shù)


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、新建一個(gè)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列表->點(diǎn)擊你的bucket->點(diǎn)擊概覽中間就有,下面有截圖System.out.println("獲取到的Point為:" + endpoint);String accessKeyId = "你的accessKeyId "; //accessKeyId 、accessKeySecret 上面有說到哪里獲取String accessKeySecret = "你的accessKeySecret ";String bucketName = "你的bucketName "; //剛才新建的bucket名稱String fileHost = "你的fileHost "; //在剛才新建的bucket下面新建一個(gè)目錄,這就是那個(gè)目錄的名稱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 {// 判斷容器是否存在,不存在就創(chuàng)建if (!client.doesBucketExist(bucketName)) {client.createBucket(bucketName);CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);client.createBucket(createBucketRequest);}// 設(shè)置文件路徑和名稱String fileUrl = fileHost + "/" + (dateStr + "/" + UUID.randomUUID().toString().replace("-", "") + "-" + file.getName());// 上傳文件PutObjectResult result = client.putObject(new PutObjectRequest(bucketName, fileUrl, file));// 設(shè)置權(quán)限(公開讀)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>

三、運(yùn)行項(xiàng)目


選擇一個(gè)文件點(diǎn)擊上傳:

提示上傳成功,我們看下控制臺(tái):

輸出的是我們文件上傳的路徑,然后我們看下我們阿里云OSS存儲(chǔ)里面有沒有數(shù)據(jù):

發(fā)現(xiàn)已經(jīng)有了,這就是一個(gè)SpringBoot基于阿里云OSS上傳文件的例子。

總結(jié)

以上是生活随笔為你收集整理的SpringBoot整合阿里云OSS上传文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。