package com.ruoyi.web.controller.common; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileUploadUtils; import com.ruoyi.common.utils.file.FileUtils; import com.ruoyi.framework.config.ServerConfig; /** * 通用请求处理 * * @author ruoyi */ @RestController @RequestMapping("/common") public class CommonController { private static final Logger log = LoggerFactory.getLogger(CommonController.class); @Autowired private ServerConfig serverConfig; private static final String FILE_DELIMETER = ","; // /** // * 通用下载请求 // * // * @param fileName 文件名称 // * @param delete 是否删除 // */ // @GetMapping("/download") // public void fileDownload(String fileName, Boolean delete, HttpServletResponse response, HttpServletRequest request) // { // try // { // if (!FileUtils.checkAllowDownload(fileName)) // { // throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName)); // } // String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); // String filePath = RuoYiConfig.getDownloadPath() + fileName; // // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // FileUtils.setAttachmentResponseHeader(response, realFileName); // FileUtils.writeBytes(filePath, response.getOutputStream()); // if (delete) // { // FileUtils.deleteFile(filePath); // } // } // catch (Exception e) // { // log.error("下载文件失败", e); // } // } // /** // * 通用上传请求(单个) // */ // @PostMapping("/upload") // public AjaxResult uploadFile(MultipartFile file) throws Exception // { // try // { // // 上传文件路径 // String filePath = RuoYiConfig.getUploadPath(); // // 上传并返回新文件名称 // String fileName = FileUploadUtils.upload(filePath, file); // String url = serverConfig.getUrl() + fileName; // AjaxResult ajax = AjaxResult.success(); // ajax.put("url", url); // ajax.put("fileName", fileName); // ajax.put("newFileName", FileUtils.getName(fileName)); // ajax.put("originalFilename", file.getOriginalFilename()); // return ajax; // } // catch (Exception e) // { // return AjaxResult.error(e.getMessage()); // } // } /** * 通用上传请求(单个) */ @PostMapping("/uploadMinio") public AjaxResult uploadFileMinio(MultipartFile file) throws Exception { try { String url = FileUploadUtils.uploadMinio(file); AjaxResult ajax = AjaxResult.success(); ajax.put("url", url); ajax.put("originalFilename", file.getOriginalFilename()); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } // /** // * 通用上传请求(多个) // */ // @PostMapping("/uploads") // public AjaxResult uploadFiles(List<MultipartFile> files) throws Exception // { // try // { // // 上传文件路径 // String filePath = RuoYiConfig.getUploadPath(); // List<String> urls = new ArrayList<String>(); // List<String> fileNames = new ArrayList<String>(); // List<String> newFileNames = new ArrayList<String>(); // List<String> originalFilenames = new ArrayList<String>(); // for (MultipartFile file : files) // { // // 上传并返回新文件名称 // String fileName = FileUploadUtils.upload(filePath, file); // String url = serverConfig.getUrl() + fileName; // urls.add(url); // fileNames.add(fileName); // newFileNames.add(FileUtils.getName(fileName)); // originalFilenames.add(file.getOriginalFilename()); // } // AjaxResult ajax = AjaxResult.success(); // ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); // ajax.put("fileNames", StringUtils.join(fileNames, FILE_DELIMETER)); // ajax.put("newFileNames", StringUtils.join(newFileNames, FILE_DELIMETER)); // ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); // return ajax; // } // catch (Exception e) // { // return AjaxResult.error(e.getMessage()); // } // } /** * 通用上传请求(多个) */ @PostMapping("/uploadsMinio") public AjaxResult uploadFilesMinio(List<MultipartFile> files) throws Exception { try { List<String> urls = new ArrayList(); List<String> originalFilenames = new ArrayList(); for(MultipartFile file : files) { String url = FileUploadUtils.uploadMinio(file); urls.add(url); originalFilenames.add(file.getOriginalFilename()); } AjaxResult ajax = AjaxResult.success(); ajax.put("urls", StringUtils.join(urls, FILE_DELIMETER)); ajax.put("originalFilenames", StringUtils.join(originalFilenames, FILE_DELIMETER)); return ajax; } catch (Exception e) { return AjaxResult.error(e.getMessage()); } } // /** // * 本地资源通用下载 // */ // @GetMapping("/download/resource") // public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) // throws Exception // { // try // { // if (!FileUtils.checkAllowDownload(resource)) // { // throw new Exception(StringUtils.format("资源文件({})非法,不允许下载。 ", resource)); // } // // 本地资源路径 // String localPath = RuoYiConfig.getProfile(); // // 数据库资源地址 // String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); // // 下载名称 // String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); // FileUtils.setAttachmentResponseHeader(response, downloadName); // FileUtils.writeBytes(downloadPath, response.getOutputStream()); // } // catch (Exception e) // { // log.error("下载文件失败", e); // } // } }