登录阿里云

打开对象存储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 {
//上传OSS
OSSUtil.upload(file.getInputStream(),file.getOriginalFilename());
//获得url
String url = OSSUtil.getURL(file.getOriginalFilename());
return ResponseResult.ok(url);
}
}