174 lines
4.3 KiB
Java
174 lines
4.3 KiB
Java
/**
|
|
* Copyright (c) 2018-2028, Chill Zhuang 庄骞 (smallchill@163.com).
|
|
* <p>
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
* <p>
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
* <p>
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
package org.springblade.resource.endpoint;
|
|
|
|
import io.swagger.annotations.Api;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.SneakyThrows;
|
|
import org.springblade.core.oss.QiniuTemplate;
|
|
import org.springblade.core.oss.model.BladeFile;
|
|
import org.springblade.core.oss.model.OssFile;
|
|
import org.springblade.core.tool.api.R;
|
|
import org.springblade.core.tool.utils.Func;
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
/**
|
|
* 对象存储端点
|
|
*
|
|
* @author Chill
|
|
*/
|
|
@RestController
|
|
@AllArgsConstructor
|
|
@RequestMapping("/oss/endpoint")
|
|
@Api(value = "对象存储端点", tags = "对象存储端点")
|
|
public class OssEndpoint {
|
|
|
|
private QiniuTemplate qiniuTemplate;
|
|
|
|
/**
|
|
* 创建存储桶
|
|
*
|
|
* @param bucketName 存储桶名称
|
|
* @return Bucket
|
|
*/
|
|
@SneakyThrows
|
|
@PostMapping("/make-bucket")
|
|
public R makeBucket(@RequestParam String bucketName) {
|
|
qiniuTemplate.makeBucket(bucketName);
|
|
return R.success("创建成功");
|
|
}
|
|
|
|
/**
|
|
* 创建存储桶
|
|
*
|
|
* @param bucketName 存储桶名称
|
|
* @return R
|
|
*/
|
|
@SneakyThrows
|
|
@PostMapping("/remove-bucket")
|
|
public R removeBucket(@RequestParam String bucketName) {
|
|
qiniuTemplate.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) {
|
|
qiniuTemplate.copyFile(fileName, destBucketName, destFileName);
|
|
return R.success("操作成功");
|
|
}
|
|
|
|
/**
|
|
* 获取文件信息
|
|
*
|
|
* @param fileName 存储桶对象名称
|
|
* @return InputStream
|
|
*/
|
|
@SneakyThrows
|
|
@GetMapping("/stat-file")
|
|
public R<OssFile> statFile(@RequestParam String fileName) {
|
|
return R.data(qiniuTemplate.statFile(fileName));
|
|
}
|
|
|
|
/**
|
|
* 获取文件相对路径
|
|
*
|
|
* @param fileName 存储桶对象名称
|
|
* @return String
|
|
*/
|
|
@SneakyThrows
|
|
@GetMapping("/file-path")
|
|
public R<String> filePath(@RequestParam String fileName) {
|
|
return R.data(qiniuTemplate.filePath(fileName));
|
|
}
|
|
|
|
|
|
/**
|
|
* 获取文件外链
|
|
*
|
|
* @param fileName 存储桶对象名称
|
|
* @return String
|
|
*/
|
|
@SneakyThrows
|
|
@GetMapping("/file-link")
|
|
public R<String> fileLink(@RequestParam String fileName) {
|
|
return R.data(qiniuTemplate.fileLink(fileName));
|
|
}
|
|
|
|
/**
|
|
* 上传文件
|
|
*
|
|
* @param file 文件
|
|
* @return ObjectStat
|
|
*/
|
|
@SneakyThrows
|
|
@PostMapping("/put-file")
|
|
public R<BladeFile> putFile(@RequestParam MultipartFile file) {
|
|
BladeFile bladeFile = qiniuTemplate.putFile(file.getOriginalFilename(), file.getInputStream());
|
|
return R.data(bladeFile);
|
|
}
|
|
|
|
/**
|
|
* 上传文件
|
|
*
|
|
* @param fileName 存储桶对象名称
|
|
* @param file 文件
|
|
* @return ObjectStat
|
|
*/
|
|
@SneakyThrows
|
|
@PostMapping("/put-file-by-name")
|
|
public R<BladeFile> putFile(@RequestParam String fileName, @RequestParam MultipartFile file) {
|
|
BladeFile bladeFile = qiniuTemplate.putFile(fileName, file.getInputStream());
|
|
return R.data(bladeFile);
|
|
}
|
|
|
|
/**
|
|
* 删除文件
|
|
*
|
|
* @param fileName 存储桶对象名称
|
|
* @return R
|
|
*/
|
|
@SneakyThrows
|
|
@PostMapping("/remove-file")
|
|
public R removeFile(@RequestParam String fileName) {
|
|
qiniuTemplate.removeFile(fileName);
|
|
return R.success("操作成功");
|
|
}
|
|
|
|
/**
|
|
* 批量删除文件
|
|
*
|
|
* @param fileNames 存储桶对象名称集合
|
|
* @return R
|
|
*/
|
|
@SneakyThrows
|
|
@PostMapping("/remove-files")
|
|
public R removeFiles(@RequestParam String fileNames) {
|
|
qiniuTemplate.removeFiles(Func.toStrList(fileNames));
|
|
return R.success("操作成功");
|
|
}
|
|
|
|
}
|