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 lombok.RequiredArgsConstructor;
|
import org.dromara.x.file.storage.core.FileInfo;
|
import org.dromara.x.file.storage.core.FileStorageService;
|
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
|
@RequiredArgsConstructor
|
public class FileUploadController implements FileUploadApi {
|
|
private final FileStorageService fileStorageService;
|
|
/**
|
* 文件上传
|
*
|
* @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
|
@PostMapping(value = "/replaceFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
|
public boolean replaceFile(@RequestPart("multipartFile") MultipartFile multipartFile,
|
@RequestParam("folderName") String folderName,
|
@RequestParam("fileName") String fileName) {
|
try {
|
FileInfo fileInfo = fileStorageService.of(multipartFile)
|
.setPath(folderName)
|
.setOriginalFilename(fileName)
|
.setSaveFilename(fileName)
|
.upload();
|
return fileInfo != null && fileName.equals(fileInfo.getFilename());
|
} catch (Exception e) {
|
return false;
|
}
|
}
|
|
@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<FileListVO> getFileList(@RequestParam("folderName") String folderName) {
|
List<FileListVO> data = new LinkedList<>();
|
List<FileListVO> 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
|
@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 IllegalArgumentException(e);
|
}
|
return null;
|
}
|
|
@Override
|
@GetMapping("/getFile/{fileId}")
|
public FileInfo getFile(@PathVariable("fileId") String fileId) {
|
return null;
|
}
|
|
@Override
|
@GetMapping("/getDefaultPlatform")
|
public String getDefaultPlatform() {
|
return FileUploadUtils.getDefaultPlatform();
|
}
|
|
@Override
|
@GetMapping("/getVisualList")
|
public List<FileListVO> getVisualList(@RequestParam("folderName") String folderName){
|
return FileUploadUtils.getFileList(new FileParameter().setRemotePath(folderName).setRecursive(true));
|
}
|
}
|