| | |
| | | |
| | | import cn.hutool.core.lang.UUID; |
| | | import com.xiaopeng.common.core.domain.R; |
| | | import com.xiaopeng.common.core.exception.ServiceException; |
| | | import com.xiaopeng.evi.oss.service.AliOssService; |
| | | import com.xiaopeng.operation.vo.FileUploadVO; |
| | | import io.swagger.annotations.Api; |
| | |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.IOException; |
| | | import java.util.Arrays; |
| | | import java.util.HashSet; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | */ |
| | | @Api(tags = "阿里云文件上传") |
| | | @RestController |
| | | @RequestMapping("/base/v1/oss") |
| | | @RequestMapping("") |
| | | public class OssController { |
| | | |
| | | @Resource |
| | | private AliOssService aliOssService; |
| | | |
| | | @PostMapping(value = "/upload",headers = "content-type=multipart/form-data") |
| | | private static final Set<String> ALLOWED_IMAGE_TYPES = new HashSet<>(Arrays.asList( |
| | | ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp", ".svg" |
| | | )); |
| | | |
| | | /** |
| | | * 校验文件名安全性和图片类型 |
| | | */ |
| | | private void validateFileName(String fileName) throws IOException { |
| | | if (fileName == null || fileName.trim().isEmpty()) { |
| | | throw new IOException("文件名不能为空"); |
| | | } |
| | | if (fileName.contains("../") || fileName.contains("..\\")) { |
| | | throw new IOException("文件名包含非法字符"); |
| | | } |
| | | String fileExtension = ""; |
| | | int lastDotIndex = fileName.lastIndexOf("."); |
| | | if (lastDotIndex > 0) { |
| | | fileExtension = fileName.substring(lastDotIndex).toLowerCase(); |
| | | } |
| | | if (!ALLOWED_IMAGE_TYPES.contains(fileExtension)) { |
| | | throw new ServiceException("只允许上传图片文件,支持的类型:jpg, jpeg, png, gif, bmp, webp, svg"); |
| | | } |
| | | } |
| | | |
| | | @PostMapping(value = "/base/v1/oss/upload",headers = "content-type=multipart/form-data") |
| | | @ApiOperation(value = "文件上传",tags = "文件上传") |
| | | public R<FileUploadVO> uploadOSS(@RequestParam(value = "file") MultipartFile file) { |
| | | public R<FileUploadVO> uploadOSS(@RequestParam("file") MultipartFile file) { |
| | | try { |
| | | // 上传并返回访问地址 |
| | | String fileName = file.getOriginalFilename(); |
| | | validateFileName(fileName); |
| | | String prefix = fileName.substring(fileName.lastIndexOf(".")); |
| | | long fileSize = file.getSize(); |
| | | String fileId = UUID.randomUUID().toString(); |
| | | //上传文件 |
| | | // aliOssService.uploadFile(file.getBytes(), fileId); |
| | | // String downloadUrl = aliOssService.getDownloadUrl(fil aeId, fileName,true); |
| | | // FileUploadVO fileUploadVO = new FileUploadVO(); |
| | | // fileUploadVO.setId(fileId); |
| | | // fileUploadVO.setName(fileName); |
| | | // fileUploadVO.setUrl(downloadUrl); |
| | | |
| | | aliOssService.uploadFile(file.getBytes(), fileId); |
| | | String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true); |
| | | FileUploadVO fileUploadVO = new FileUploadVO(); |
| | | fileUploadVO.setId(UUID.randomUUID().toString()); |
| | | fileUploadVO.setName("测试.jpg"); |
| | | fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png"); |
| | | fileUploadVO.setId(fileId); |
| | | fileUploadVO.setName(fileName); |
| | | fileUploadVO.setUrl(downloadUrl); |
| | | |
| | | // FileUploadVO fileUploadVO = new FileUploadVO(); |
| | | // fileUploadVO.setId(UUID.randomUUID().toString()); |
| | | // fileUploadVO.setName("测试.jpg"); |
| | | // fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png"); |
| | | return R.ok(fileUploadVO); |
| | | } catch (Exception e) { |
| | | System.err.println("上传文件失败"+e); |
| | |
| | | |
| | | |
| | | |
| | | @PostMapping(value = "/getUploadOSSUrl") |
| | | |
| | | @PostMapping(value = "/maintenance-app/base/v1/oss/upload",headers = "content-type=multipart/form-data") |
| | | @ApiOperation(value = "文件上传",tags = "文件上传") |
| | | public R<FileUploadVO> uploadOSS1(@RequestParam("file") MultipartFile file) { |
| | | try { |
| | | // 上传并返回访问地址 |
| | | String fileName = file.getOriginalFilename(); |
| | | validateFileName(fileName); |
| | | String prefix = fileName.substring(fileName.lastIndexOf(".")); |
| | | long fileSize = file.getSize(); |
| | | String fileId = UUID.randomUUID().toString(); |
| | | //上传文件 |
| | | aliOssService.uploadFile(file.getBytes(), fileId); |
| | | String downloadUrl = aliOssService.getDownloadUrl(fileId, fileName,true); |
| | | FileUploadVO fileUploadVO = new FileUploadVO(); |
| | | fileUploadVO.setId(fileId); |
| | | fileUploadVO.setName(fileName); |
| | | fileUploadVO.setUrl(downloadUrl); |
| | | |
| | | // FileUploadVO fileUploadVO = new FileUploadVO(); |
| | | // fileUploadVO.setId(UUID.randomUUID().toString()); |
| | | // fileUploadVO.setName("测试.jpg"); |
| | | // fileUploadVO.setUrl("https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png"); |
| | | return R.ok(fileUploadVO); |
| | | } catch (Exception e) { |
| | | System.err.println("上传文件失败"+e); |
| | | return R.fail(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @PostMapping(value = "/maintenance-app/base/v1/oss/getUploadOSSUrl") |
| | | @ApiOperation(value = "获取文件上传地址",tags = "文件上传") |
| | | public R<String> getUploadOSSUrl(@RequestParam("fileId") String fileId) { |
| | | try { |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @PostMapping(value = "/base/v1/oss/getUploadOSSUrl") |
| | | @ApiOperation(value = "获取文件上传地址",tags = "文件上传") |
| | | public R<String> getUploadOSSUrl1(@RequestParam("fileId") String fileId) { |
| | | try { |
| | | // 上传并返回访问地址 |
| | | String uploadUrl = aliOssService.getUploadUrl(fileId, true); |
| | | return R.ok(uploadUrl); |
| | | } catch (Exception e) { |
| | | System.err.println("上传文件失败"+e); |
| | | return R.fail(e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |