FileController.java 2.64 KB
package com.pashanhoo.common.util.fileupload;

import com.pashanhoo.common.Result;
import io.minio.messages.DeleteError;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 文件上传
 */
@Api(tags = "文件控制器")
@RequestMapping("/file")
@RestController
public class FileController {

    @Autowired
    MinioUtil minioUtil;
    @Autowired
    MinioConfig minioConfig;

    @RequestMapping(value = "/upload", method = RequestMethod.POST)
    @ApiOperation("上传单个文件")
    public Result upload(@RequestPart("file") MultipartFile file, HttpServletResponse response) {

        try {
            return Result.ok(minioUtil.upload(file));
        } catch (Exception e) {
            return Result.exception(e.getMessage());
        }
    }

    @RequestMapping(value = "/batchUpload", method = RequestMethod.POST,headers = "content-type=multipart/form-data")
    @ApiOperation("上传多个文件")
    public Result upload(@RequestPart("file") MultipartFile[] files, HttpServletResponse response) {

        try {
            return Result.ok(minioUtil.batchUpload(files));
        } catch (Exception e) {
            return Result.exception(e.getMessage());
        }
    }

    @DeleteMapping("/deleteFile")
    @ApiOperation("删除文件")
    public Result deleteFile(@ApiParam("存储url") @RequestParam("saveUrl") String saveUrl){
        try {
             minioUtil.removeObject(minioConfig.getBucket(), saveUrl);
            return Result.ok();
        } catch (Exception e) {
            return Result.exception(e.getMessage());
        }
    }

    @DeleteMapping("/batchDeleteFile")
    @ApiOperation("批量删除文件")
    public Result batchDeleteFile(@ApiParam("存储url集合") @RequestBody List<String> saveUrls){
        try {
            List<String> msg = new ArrayList<>();
            Iterable<io.minio.Result<DeleteError>> results = minioUtil.batchRemove(minioConfig.getBucket(), saveUrls);
            for (io.minio.Result<DeleteError> result : results) {
                DeleteError deleteError = result.get();
                msg.add("Error in deleting object " + deleteError.objectName() + ":" + deleteError.message());
            }
            return Result.ok(msg.toString());
        } catch (Exception e) {
            return Result.exception(e.getMessage());
        }
    }

}