阿里云OSS上传 删除

在这里插入图片描述

@Component
@Slf4j(topic = “AliyunOSSUtil”)
public class AliyunOSSUtil {

@Autowired
private AliyunConfig aliyunConfig;

/**
 * 阿里云上传文件
 *
 * @param file 文件
 * @return FileDTO
 */
public FileDTO upLoad(MultipartFile file) throws IOException {
    log.info("------OSS文件上传开始--------" + file.getName());
    BufferedImage sourceImg = ImageIO.read(file.getInputStream());
    Double height = (double) sourceImg.getHeight();
    Double width = (double) sourceImg.getWidth();
    String endpoint = aliyunConfig.getEndpoint();
    System.out.println("获取到的Point为:" + endpoint);
    String accessKeyId = aliyunConfig.getAccessKeyId();
    String accessKeySecret = aliyunConfig.getAccessKeySecret();
    String bucketName = aliyunConfig.getBucketName();
    String fileHost = aliyunConfig.getFolder();

    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    String dateStr = format.format(new Date());
    String uuid = UUID.randomUUID().toString().replace("-", "");
    String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1);
    OSSClient client = new OSSClient(endpoint, accessKeyId, accessKeySecret);
    try {
        // 判断容器是否存在,不存在就创建
        if (!client.doesBucketExist(bucketName)) {
            client.createBucket(bucketName);
            CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
            createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
            client.createBucket(createBucketRequest);
        }
        // 设置文件路径和名称
        String fileUrl = fileHost + "/" + (dateStr + "/" + uuid) + "-" + file.getOriginalFilename();
        // 上传文件

// PutObjectResult result = client.putObject(new PutObjectRequest(bucketName, fileUrl, file));
PutObjectResult result = client.putObject(bucketName, fileUrl, new ByteArrayInputStream(file.getBytes()));
log.info(“result” + result);
// 设置权限(公开读)
client.setBucketAcl(bucketName, CannedAccessControlList.PublicRead);

        if (result != null) {
            System.out.println(result);
            log.info("------OSS文件上传成功------" + fileUrl);
            return new FileDTO(
                    file.getSize(),//文件大小
                    fileUrl,//文件的绝对路径
                    aliyunConfig.getWebUrl() + "/" + fileUrl,//文件的web访问地址
                    suffix,//文件后缀
                    "",//存储的bucket
                    bucketName,//原文件名
                    fileHost,//存储的文件夹
                    height, // 文件高度
                    width // 文件宽度
            );

        }
    } catch (OSSException oe) {
        log.error(oe.getMessage());
    } catch (ClientException ce) {
        log.error(ce.getErrorMessage());
    } finally {
        if (client != null) {
            client.shutdown();
        }
    }
    return null;
}

/**
 * 删除文件
 *
 * @param fileKey 文件唯一标识
 * @return Result
 */
public Result delete(String fileKey) {
    log.info("===========>OSS文件删除");
    String endpoint = aliyunConfig.getEndpoint();
    System.out.println("获取到的Point为:" + endpoint);
    String accessKeyId = aliyunConfig.getAccessKeyId();
    String accessKeySecret = aliyunConfig.getAccessKeySecret();
    String bucketName = aliyunConfig.getBucketName();

// String fileHost = aliyunConfig.getFolder();
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
try {
if (!ossClient.doesBucketExist(bucketName)) {
log.info("=>bucket不存在");
return new Result().ok(“你的bucket不存在”);
} else {
log.info("
=>开始删除");
ossClient.deleteObject(bucketName, fileKey);
log.info("===========>删除成功");
return new Result().ok(“删除成功” + fileKey);
}
} catch (Exception e) {
log.info(“删除失败” + e);
return new Result().ok(“删除失败”);
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}

@RestController
@Api(value = “API - FileUploadController”, description = “文件”)
@Slf4j(topic = “FileUploadController”)
public class FileUploadController {

@Autowired
private AliyunOSSUtil aliyunOSSUtil;


/**
 * 阿里云文件上传
 *
 * @param file
 * @return
 */
@ApiOperation(value = "文件上传")
@PostMapping(value = "/menu/uploadFile")
public Result uploadFile(@RequestParam("file") MultipartFile file) throws IOException {
    log.info("文件上传");
    /*String filename = file.getOriginalFilename();
    System.out.println(filename);
    try {
        // 判断文件
        if (file != null) {
            if (!"".equals(filename.trim())) {
                File newFile = new File(filename);
                FileOutputStream os = new FileOutputStream(newFile);
                os.write(file.getBytes());
                os.close();
                file.transferTo(newFile);
                // 上传到OSS
                return new Result().ok(aliyunOSSUtil.upLoad(newFile));
            }

        }
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return null;*/
    return new Result().ok(aliyunOSSUtil.upLoad(file));
}

/**
 * 阿里云文件删除
 *
 * @param fileKey 文件唯一标识
 * @return Result
 */
@ApiOperation(value = "文件删除")
@ApiImplicitParams({
        @ApiImplicitParam(name = "fileKey", value = "文件标识", dataType = "String")})
@DeleteMapping(value = "/menu/deleteFile")
public Result deleteFile(@RequestParam(value = "fileKey") String fileKey) {
    return aliyunOSSUtil.delete(fileKey);
}

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43054241/article/details/106192839