1、引依賴
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version>
</dependency>
<dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version>
</dependency>
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>
2、配置項
#阿里云OSS
aliyun:oss:endpoint: accessKeyId: accessKeySecret: bucketName:
3、文件上傳工具類
@Data
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {private String endpoint;private String accessKeyId;private String accessKeySecret;private String bucketName;
}
/*** 阿里云 OSS 工具類*/
@Component
public class AliOSSUtils {@Autowiredprivate AliOSSProperties aliOSSProperties;/*** 實現上傳圖片到OSS*/public String upload(MultipartFile file) throws IOException {//獲取阿里云OSS參數String endpoint = aliOSSProperties.getEndpoint();String accessKeyId = aliOSSProperties.getAccessKeyId();String accessKeySecret = aliOSSProperties.getAccessKeySecret();String bucketName = aliOSSProperties.getBucketName();// 獲取上傳的文件的輸入流InputStream inputStream = file.getInputStream();// 避免文件覆蓋String originalFilename = file.getOriginalFilename();String fileName = UUID.randomUUID().toString() + originalFilename.substring(originalFilename.lastIndexOf("."));//上傳文件到 OSSOSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);ossClient.putObject(bucketName, fileName, inputStream);//文件訪問路徑String url = endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + fileName;// 關閉ossClientossClient.shutdown();return url;// 把上傳到oss的路徑返回}}
4、文件上傳兩種方式
@Slf4j
@RestController
public class UploadController {@Autowiredprivate AliOSSUtils aliOSSUtils;//本地存儲文件/*@PostMapping("/upload")public Result upload(String username , Integer age , MultipartFile image) throws Exception {log.info("文件上傳: {}, {}, {}", username, age, image);//獲取原始文件名 - 1.jpg 123.0.0.jpgString originalFilename = image.getOriginalFilename();//構造唯一的文件名 (不能重復) - uuid(通用唯一識別碼) de49685b-61c0-4b11-80fa-c71e95924018int index = originalFilename.lastIndexOf(".");String extname = originalFilename.substring(index);String newFileName = UUID.randomUUID().toString() + extname;log.info("新的文件名: {}", newFileName);//將文件存儲在服務器的磁盤目錄中 E:\imagesimage.transferTo(new File("E:\\images\\"+newFileName));return Result.success();}*/@PostMapping("/upload")public Result upload(MultipartFile image) throws IOException {log.info("文件上傳, 文件名: {}", image.getOriginalFilename());//調用阿里云OSS工具類進行文件上傳String url = aliOSSUtils.upload(image);log.info("文件上傳完成,文件訪問的url: {}", url);return Result.success(url);}}