/** * BladeX Commercial License Agreement * Copyright (c) 2018-2099, https://bladex.cn. All rights reserved. *
* Use of this software is governed by the Commercial License Agreement * obtained after purchasing a license from BladeX. *
* 1. This software is for development use only under a valid license * from BladeX. *
* 2. Redistribution of this software's source code to any third party * without a commercial license is strictly prohibited. *
* 3. Licensees may copyright their own code but cannot use segments * from this software for such purposes. Copyright of this software * remains with BladeX. *
* Using this software signifies agreement to this License, and the software * must not be used for illegal purposes. *
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is * not liable for any claims arising from secondary or illegal development. *
* Author: Chill Zhuang (bladejava@qq.com)
*/
package org.springblade.resource.endpoint;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.SneakyThrows;
import org.springblade.core.oss.model.BladeFile;
import org.springblade.core.oss.model.OssFile;
import org.springblade.core.secure.annotation.IsAdmin;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.FileUtil;
import org.springblade.core.tool.utils.Func;
import org.springblade.resource.builder.OssBuilder;
import org.springblade.resource.pojo.entity.Attach;
import org.springblade.resource.service.IAttachService;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* 对象存储端点
*
* @author Chill
*/
@NonDS
@RestController
@AllArgsConstructor
@RequestMapping("/oss/endpoint")
@Tag(name = "对象存储端点", description = "对象存储端点")
public class OssEndpoint {
/**
* 对象存储构建类
*/
private final OssBuilder ossBuilder;
/**
* 附件表服务
*/
private final IAttachService attachService;
/**
* 创建存储桶
*
* @param bucketName 存储桶名称
* @return Bucket
*/
@SneakyThrows
@IsAdmin
@PostMapping("/make-bucket")
public R makeBucket(@RequestParam String bucketName) {
ossBuilder.template().makeBucket(bucketName);
return R.success("创建成功");
}
/**
* 创建存储桶
*
* @param bucketName 存储桶名称
* @return R
*/
@SneakyThrows
@IsAdmin
@PostMapping("/remove-bucket")
public R removeBucket(@RequestParam String bucketName) {
ossBuilder.template().removeBucket(bucketName);
return R.success("删除成功");
}
/**
* 拷贝文件
*
* @param fileName 存储桶对象名称
* @param destBucketName 目标存储桶名称
* @param destFileName 目标存储桶对象名称
* @return R
*/
@SneakyThrows
@PostMapping("/copy-file")
public R copyFile(@RequestParam String fileName, @RequestParam String destBucketName, String destFileName) {
ossBuilder.template().copyFile(fileName, destBucketName, destFileName);
return R.success("操作成功");
}
/**
* 获取文件信息
*
* @param fileName 存储桶对象名称
* @return InputStream
*/
@SneakyThrows
@GetMapping("/stat-file")
public R