SpringBoot上传到OSS

/** 
* 上传
* @param request
* @param response
* @return
*/
@RequestMapping(value = "/upload", method = { RequestMethod.POST })
@ResponseBody
public ResultModel<List<String>> upload(HttpServletRequest request, HttpServletResponse response) {
ResultModel<List<String>> resultModel = new ResultModel<List<String>>();
try {

// 创建一个通用的多部分解析器
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
List<String> files = new ArrayList<>();
// 判断 request 是否有文件上传,即多部分请求
if (multipartResolver.isMultipart(request)) {
// 转换成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 取得request中的所有文件名
Iterator<String> iter = multiRequest.getFileNames();
while (iter.hasNext()) {
// 取得上传文件
MultipartFile file = multiRequest.getFile(iter.next());
if (file != null) {
// 取得当前上传文件的文件名称
String fileName = file.getOriginalFilename();
// 如果名称不为空,说明该文件存在,否则说明该文件不存在
if (fileName.trim() != "") {
File newFile = new File(fileName);
FileOutputStream outStream = new FileOutputStream(newFile); // 文件输出流用于将数据写入文件
outStream.write(file.getBytes());
outStream.close(); // 关闭文件输出流
file.transferTo(newFile);
// 上传到阿里云
files.add(AliOSSUtil.upload(newFile));
newFile.delete();
}
}
}
}

resultModel.setReturnValue(files);
} catch (ValidateException e) {
resultModel.setSuccessed(false);
resultModel.setErrorCode(e.getMessage());
} catch (Exception e) {
resultModel.setSuccessed(false);
resultModel.setErrorCode("system error");
log.error(e.getMessage());
e.printStackTrace();
}
return resultModel;
}


Util文件


public class AliOSSUtil {

private final static Logger log = Logger.getLogger(AliOSSUtil.class);
private static String END_POINT = "oss-cn-shanghai.aliyuncs.com";
private static String ACCESS_KEY_ID = "xxx";
private static String ACCESS_KEY_SECRET = "xxx";
private static String BUCKET_NAME = "xxx-image";
// 文件访问域名
private static String FILE_HOST = "https://file.xxx.com/";

/**
* 方法描述:上传文件
* @param file 文件对象
* @return
*/
public static String upload(File file) {
if (file == null) {
return null;
}
// 创建OSS客户端
OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
try {
// 判断文件容器是否存在,不存在则创建
if (!ossClient.doesBucketExist(BUCKET_NAME)) {
ossClient.createBucket(BUCKET_NAME);
CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME);
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);
}
// 创建文件路径

String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false);
// 上传文件
PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, file));
if (null != result) {
return FILE_HOST + fileUrl;
}
} catch (OSSException oe) {
log.error(oe.getMessage());
} catch (ClientException ce) {
log.error(ce.getMessage());
} finally {
// 关闭OSS服务,一定要关闭
ossClient.shutdown();
}
return null;
}

/**
* 方法描述:上传文件
* @param inputStream 文件流
* @return
* @throws FileNotFoundException
*/
public static String upload(InputStream inputStream) throws FileNotFoundException {
if (inputStream == null) {
return null;
}
// 创建OSS客户端
OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
try {
// 判断文件容器是否存在,不存在则创建
if (!ossClient.doesBucketExist(BUCKET_NAME)) {
ossClient.createBucket(BUCKET_NAME);
CreateBucketRequest createBucketRequest = new CreateBucketRequest(BUCKET_NAME);
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);
}
// 创建文件路径
String fileUrl = DateUtil.dateTo8String2(new Date()) + "/" + UuidUtil.getUuidByJdk(false);
// 上传文件
PutObjectResult result = ossClient.putObject(new PutObjectRequest(BUCKET_NAME, fileUrl, inputStream));
if (null != result) {
return FILE_HOST + fileUrl;
}
} catch (OSSException oe) {
log.error(oe.getMessage());
} catch (ClientException ce) {
log.error(ce.getMessage());
} finally {
// 关闭OSS服务,一定要关闭
ossClient.shutdown();
}
return null;

}

}



最后 MAVEN 的依赖配置


   <dependency>  
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值