package org.jeecg.modules.common.controller;
import cn.hutool.core.io.IoUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.var;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.MinioUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.ArrayList;
@Api(tags = "通用接口-文件操作")
@RestController
@RequestMapping("common/file")
public class FileController {
@ApiOperation("上传")
@PostMapping("upload")
public Result upload(@RequestParam MultipartFile file) {
return Result.OK(MinioUtil.upload(file));
}
@ApiOperation("批量上传")
@PostMapping("uploadBatch")
public Result uploadBatch(MultipartHttpServletRequest request) {
var names = request.getFileNames(); //参数名不是文件名
var files = new ArrayList<MultipartFile>();
while (names.hasNext())
files.addAll(request.getFiles(names.next()));
var results = new ArrayList<String>();
for (MultipartFile file : files)
results.add(MinioUtil.upload(file));
return Result.OK(results);
}
@ApiOperation("下载")
@GetMapping("download")
public void download(@RequestParam String name, HttpServletResponse response) throws Exception {
response.setCharacterEncoding("utf-8");
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(name, "utf-8"));
var responseStream = response.getOutputStream();
var fileStream = MinioUtil.getMinioFile(name);
IoUtil.copy(fileStream, responseStream);
}
}
spring boot框架通过servlet实现下载和多文件上传
最新推荐文章于 2023-05-11 13:13:34 发布