package jnpf.upload.controller; import feign.Response; import jnpf.entity.FileParameter; import jnpf.file.FileUploadApi; import jnpf.model.FileListVO; import jnpf.model.upload.UploadFileModel; import jnpf.util.*; import org.dromara.x.file.storage.core.FileInfo; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.LinkedList; import java.util.List; /** * 文件上传类 * * @author JNPF开发平台组 * @version V3.1.0 * @copyright 引迈信息技术有限公司(https://www.jnpfsoft.com) * @date 2021-07-20 */ @RequestMapping(value = "/upload") @RestController public class FileUploadController implements FileUploadApi { /** * 文件上传 * * @param multipartFile * @param folderName * @param fileName * @return */ @Override @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public FileInfo uploadFile(@RequestPart("multipartFile") MultipartFile multipartFile, @RequestParam("folderName") String folderName, @RequestParam("fileName") String fileName) { //根据文件保存类型选择对应的方法 try { return FileUploadUtils.uploadFile(new FileParameter(folderName, fileName), multipartFile); } catch (Exception e) { return null; } } @Override @NoDataSourceBind @GetMapping(value = "/getByte/{fileName}/{folderName}") public byte[] getByte(@PathVariable("fileName") String fileName, @PathVariable("folderName") String folderName) { return FileUploadUtils.downloadFile(new FileParameter(folderName, fileName)); } @Override @NoDataSourceBind @GetMapping(value = "/listFiles") public List getFileList(@RequestParam("folderName") String folderName) { List data = new LinkedList<>(); List fileList = FileUploadUtils.getFileList(new FileParameter().setRemotePath(folderName).setRecursive(true)); for (int i = 0; i < fileList.size(); i++) { FileListVO fileDetail = fileList.get(i); FileListVO fileModel = new FileListVO(); fileModel.setFileId(i + ""); fileModel.setFileType(fileDetail.getFileType()); fileModel.setFileName(fileDetail.getFileName()); fileModel.setFileTime(fileDetail.getFileTime()); fileModel.setFileSize(fileDetail.getFileSize() == null ? "0" : String.valueOf(fileDetail.getFileSize())); data.add(fileModel); } return data; } // @Override // @PostMapping("/downToLocal") // public void downToLocal(@RequestBody UploadFileModel model) { // FileUploadUtils.downloadFileToLocal(new FileParameter(model.getFolderName(), model.getObjectName())); // } // // @Override // @PostMapping("/downFile") // public void downFile(@RequestBody UploadFileModel model) { // FileUploadUtils.downloadFileToLocal(new FileParameter(model.getFolderName(), model.getObjectName()).setLocaFilelPath(model.getFilePath())); // } @Override @NoDataSourceBind @PostMapping("/downFile") public Response downFile(@RequestBody UploadFileModel model) { try { FileUploadUtils.downloadFile(new FileParameter(model.getFolderName(), model.getObjectName()), ServletUtil.getResponse().getOutputStream()); } catch (IOException e) { throw new RuntimeException(e); } return null; } @Override @GetMapping("/getFile/{fileId}") public FileInfo getFile(@PathVariable("fileId") String fileId) { return null; // FileDetail detail = FileUploadUtils.getFileDetail(fileId); // return BeanUtil.copyProperties(detail,FileInfo.class,"attr"); } @Override @GetMapping("/getDefaultPlatform") public String getDefaultPlatform() { return FileUploadUtils.getDefaultPlatform(); } @Override @GetMapping("/getVisualList") public List getVisualList(@RequestParam("folderName") String folderName){ return FileUploadUtils.getFileList(new FileParameter().setRemotePath(folderName).setRecursive(true)); } }