> 技术文档 > Springboot项目实现将文件上传到阿里云

Springboot项目实现将文件上传到阿里云


Springboot项目实现将文件上传到阿里

一、概述

二、具体步骤

2.1引入阿里云工具

首先先建utils包,然后引入AliOSSUtils类,如下:

package com.hechixueyuan.forestfiredetectionsystem.utils;import com.aliyun.oss.OSS;import com.aliyun.oss.OSSClientBuilder;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import java.io.*;import java.util.UUID;/** * 阿里云 OSS 工具类 *///将这个类交给ioc容器管理@Componentpublic class AliOSSUtils { private String endpoint = \"自己的endpoint\"; private String accessKeyId = \"自己的accessKeyId\"; private String accessKeySecret = \"自己的accessKeySecret\"; private String bucketName = \"自己的bucketName\"; /** * 实现上传图片到OSS */ public String upload(MultipartFile file) throws IOException { // 获取上传的文件的输入流 InputStream inputStream = file.getInputStream(); // 避免文件覆盖 String originalFilename = file.getOriginalFilename(); String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf(\".\")); //上传文件到 OSS OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret); ossClient.putObject(bucketName, fileName, inputStream); //文件访问路径 String url = endpoint.split(\"//\")[0] + \"//\" + bucketName + \".\" + endpoint.split(\"//\")[1] + \"/\" + fileName; // 关闭ossClient ossClient.shutdown(); return url;// 把上传到oss的路径返回 }}

2.2写好Controller层代码

package com.hechixueyuan.forestfiredetectionsystem.controller;import com.hechixueyuan.forestfiredetectionsystem.pojo.Result;import com.hechixueyuan.forestfiredetectionsystem.utils.AliOSSUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import org.springframework.web.multipart.MultipartFile;import java.io.File;import java.io.IOException;import java.util.UUID;//这个注解是用来生成日志的@RestControllerpublic class UoloadController {// 注入阿里云工具类 @Autowired private AliOSSUtils aliOSSUtils; //这里我是手动引入注释 private static final Logger log = LoggerFactory.getLogger(UoloadController.class);// 上传到阿里云(数据传输一般使用post请求)@PostMapping(\"upload\") public Result upload(MultipartFile image) throws IOException {// 写入日志 log.info(\"上传文件,文件名为:{}\",image.getOriginalFilename());// 取得文件上传后的url String url = aliOSSUtils.upload(image);// 记录到日志里面 log.info(\"文件上传成功,文件的url为:{}\",url); return Result.success(url); }}

2.3使用Postman测试

Springboot项目实现将文件上传到阿里云

其中值得注意的是\"image\"对应着后端post请求方法public Result upload(MultipartFile image)中的形参名,文件的话讲image的类型置为file类型,即可点击value在磁盘中选择自己想要上传的文件。