【SpringBoot实战】基于阿里云实现文件上传
在实际项目开发中,不可避免地会使用到阿里云OSS进行文件存储。尽管阿里云有详细的开发文档,但本篇博客的目的是让我们能够用简明的代码快速实现这个功能。
引入依赖
<dependencies><!-- 阿里云oss依赖 --><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.9.1</version></dependency><!-- 日期工具栏依赖 --><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.10.1</version></dependency>
</dependencies>
文件上传
public String fileUpload(MultipartFile file) {String endpoint = "endpoint"; // 如:oss-cn-shanghai.aliyuncs.comString keyId = "keyId";String keySecret = "keySecret";String bucketName = "bucketName"; // bucket名称// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);try {InputStream inputStream = file.getInputStream();// 文件实际名称String filename = file.getOriginalFilename();// 使用uuid确保文件名唯一String uuid = UUID.randomUUID().toString().replaceAll("-", "");// 对上传文件进行分组,根据当前年/月/日String date = new DateTime().toString("yyyy/MM/dd");filename = date + "/" + uuid + filename;// 创建PutObjectRequest对象PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, filename, inputStream);// 设置该属性可以返回response。如果不设置,则返回的response为空putObjectRequest.setProcess("true");// 上传文件PutObjectResult result = ossClient.putObject(putObjectRequest);// 返回文件的urlreturn result.getResponse().getUri();} catch (Exception e) {e.printStackTrace();} finally {if (ossClient != null) {ossClient.shutdown();}}return null;}