SpringBoot上传下载文件+oss实例
作者:偷代码的猫
这篇文章主要介绍了SpringBoot上传下载文件+oss实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
SpringBoot上传下载文件+oss
上传文件
Controller
@ApiOperation(value = "上传文件", tags = {"通用接口",})
@ApiResponses(value = {@ApiResponse(code = 200, message = "上传文件", response = ResultVO.class)})
@PostMapping("/upload/file")
public ResultVO uploadFile(@ApiParam(value = "文件") @RequestParam("file") MultipartFile file,
@ApiParam(value = "id") @RequestParam("id")Integer id) {
String filePath = "xx/"+file.getOriginalFilename();
ResultVO resultVO = new ResultVO();
resultVO.setCode(200);
resultVO.setMessage("上传成功");
try {
ossUtil.uploadFile(file.getInputStream(),filePath);
}catch (Exception e){
resultVO.setMessage("上传失败");
e.printStackTrace();
}
return resultVO;
}Service
/**
* 上传文件
* @param inputStream
* @param fileName
*/
public void uploadFile(InputStream inputStream, String fileName){
OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);
String objectName = fileDir+"/"+fileName;
if(!ossClient.doesBucketExist(bucketName)){
ossClient.createBucket(bucketName);
}
ossClient.putObject(bucketName,objectName,inputStream);
ossClient.shutdown();
}下载文件
Controller
/**
* 上传文件
*/
@ApiOperation(value = "下载文件", tags = {"通用接口",})
@ApiResponses(value = {@ApiResponse(code = 200, message = "下载文件", response = ResultVO.class)})
@GetMapping("/down/file")
public ResponseEntity downFile(@ApiParam(value = "文件名,包括后缀") @RequestParam("name") String name) {
ResultVO resultVO = new ResultVO();
String filePath = "xx/"+name;
resultVO.setCode(200);
resultVO.setMessage("下载成功");
try {
// ossUtil.downloadFile(name,saveDir,filePath);
InputStream inputStream = ossUtil.downloadFile(filePath);
HttpHeaders headers = new HttpHeaders();
headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
headers.add("Content-Disposition", "attachment; filename=" + new String(name.getBytes("UTF-8"),"iso-8859-1"));
headers.add("Pragma", "no-cache");
headers.add("Expires", "0");
headers.add("Last-Modified", new Date().toString());
headers.add("ETag", String.valueOf(System.currentTimeMillis()));
return new ResponseEntity<byte[]>(ossUtil.getBytes(inputStream), headers, HttpStatus.OK);
}catch (Exception e){
resultVO.setMessage("下载失败");
e.printStackTrace();
}
return ResponseEntity.notFound().build();
}Service
/**
* 下载文件
*/
public InputStream downloadFile(String filePath) throws IOException {
OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);
String objectName = fileDir+"/"+filePath;
OSSObject ossObject = ossClient.getObject(bucketName, objectName);
// ossClient.shutdown();
return ossObject.getObjectContent();
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
