登录阿里云

打开对象存储OSS

创建Bucket,设置名字

进入Bucket,新建目录

设置AccessKey—>点击头像—>AccessKey管理
RAM授权

新建保存accessKey和secret

OSS上传工具类
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency>
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSBuilder;
import com.aliyun.oss.OSSClientBuilder;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.net.URL;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;/*** OSS文件上传工具类*/
public class OSSUtil {// Endpoint以杭州为例,其它Region请按实际情况填写。private static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。private static String accessKeyId = "xxx";private static String accessKeySecret = "xx";private static String bucketName = "xx";//目录名public static String dir = "images";/*** 文件上传* @param inputStream* @param fileName*/public static void upload(InputStream inputStream, String fileName){OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);oss.putObject(bucketName,dir +"/"+ fileName,inputStream);oss.shutdown();}/*** 获得文件URL* @param fileName* @return*/public static String getURL(String fileName){OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);//设置过期时间LocalDateTime time = LocalDateTime.now().plusDays(100);Date expiration = Date.from(time.atZone( ZoneId.systemDefault()).toInstant());URL url = oss.generatePresignedUrl(bucketName, dir +"/"+ fileName, expiration);oss.shutdown();return url.toString();}public static void main(String[] args) throws FileNotFoundException {OSSUtil.upload(new FileInputStream("D:\\images\\3.jpg"),"3.jpg");System.out.println(OSSUtil.getURL("3.jpg"));}
}
控制器
@Api("上传接口")
@RestController
public class UploadController {@ApiOperation("上传文件")@PostMapping("/upload")public ResponseResult<String> upload(MultipartFile file) throws IOException {//上传OSSOSSUtil.upload(file.getInputStream(),file.getOriginalFilename());//获得urlString url = OSSUtil.getURL(file.getOriginalFilename());return ResponseResult.ok(url);}
}