mirror of
https://gitee.com/durcframework/SOP.git
synced 2025-08-11 21:57:56 +08:00
1.8.0
This commit is contained in:
@@ -1,56 +1,78 @@
|
||||
package com.gitee.sop.storyweb.controller;
|
||||
|
||||
import com.gitee.sop.servercommon.annotation.ApiMapping;
|
||||
import com.gitee.sop.servercommon.util.UploadUtil;
|
||||
import com.gitee.sop.storyweb.controller.param.FileUploadParam;
|
||||
import com.gitee.sop.storyweb.controller.param.FileUploadParam2;
|
||||
import com.gitee.sop.storyweb.vo.FileUploadVO;
|
||||
import org.apache.commons.fileupload.servlet.ServletFileUpload;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.Collection;
|
||||
|
||||
/**
|
||||
* 演示文件上传
|
||||
*
|
||||
* @author tanghc
|
||||
*/
|
||||
@RestController
|
||||
public class FileUploadDemoController {
|
||||
|
||||
/**
|
||||
* 接收客户端上传的文件,然后把文件信息返回给客户端
|
||||
* 方式1:将文件写在参数中,可直接获取。好处是可以校验是否上传
|
||||
* @param param
|
||||
* @param request
|
||||
* @return
|
||||
*/
|
||||
@ApiMapping(value = "demo.file.upload", ignoreValidate = true)
|
||||
public FileUploadVO file(FileUploadParam param, HttpServletRequest request) {
|
||||
@ApiMapping(value = "demo.file.upload")
|
||||
public FileUploadVO file1(FileUploadParam param) {
|
||||
System.out.println(param.getRemark());
|
||||
// 获取上传的文件
|
||||
MultipartFile file1 = param.getFile1();
|
||||
MultipartFile file2 = param.getFile2();
|
||||
|
||||
FileUploadVO vo = new FileUploadVO();
|
||||
FileUploadVO.FileMeta fileMeta1 = buildFileMeta(file1);
|
||||
FileUploadVO.FileMeta fileMeta2 = buildFileMeta(file2);
|
||||
|
||||
vo.getFiles().add(fileMeta1);
|
||||
vo.getFiles().add(fileMeta2);
|
||||
return vo;
|
||||
}
|
||||
|
||||
/**
|
||||
* 方式2:从request中获取上传文件
|
||||
*
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@ApiMapping(value = "demo.file.upload2")
|
||||
public FileUploadVO file2(FileUploadParam2 param, HttpServletRequest request) {
|
||||
System.out.println(param.getRemark());
|
||||
FileUploadVO vo = new FileUploadVO();
|
||||
//检查form中是否有enctype="multipart/form-data"
|
||||
if (ServletFileUpload.isMultipartContent(request)) {
|
||||
//将request变成多部分request
|
||||
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
|
||||
Map<String, MultipartFile> fileMap = multiRequest.getFileMap();
|
||||
fileMap.entrySet()
|
||||
.stream()
|
||||
.forEach(entry->{
|
||||
MultipartFile multipartFile = entry.getValue();
|
||||
try {
|
||||
String fileName = multipartFile.getOriginalFilename();
|
||||
long size = multipartFile.getSize();
|
||||
String fileContent = IOUtils.toString(multipartFile.getInputStream(), "UTF-8");
|
||||
FileUploadVO.FileMeta fileMeta = new FileUploadVO.FileMeta(fileName, size, fileContent);
|
||||
vo.getFiles().add(fileMeta);
|
||||
System.out.println(fileContent);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
});
|
||||
// 获取上传的文件
|
||||
Collection<MultipartFile> uploadFiles = UploadUtil.getUploadFiles(request);
|
||||
for (MultipartFile multipartFile : uploadFiles) {
|
||||
FileUploadVO.FileMeta fileMeta = buildFileMeta(multipartFile);
|
||||
vo.getFiles().add(fileMeta);
|
||||
}
|
||||
return vo;
|
||||
}
|
||||
|
||||
private FileUploadVO.FileMeta buildFileMeta(MultipartFile multipartFile) {
|
||||
// 文件名
|
||||
String fileName = multipartFile.getOriginalFilename();
|
||||
// 文件大小
|
||||
long size = multipartFile.getSize();
|
||||
// 文件内容
|
||||
String fileContent = null;
|
||||
try {
|
||||
fileContent = IOUtils.toString(multipartFile.getInputStream(), "UTF-8");
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return new FileUploadVO.FileMeta(fileName, size, fileContent);
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,9 @@
|
||||
package com.gitee.sop.storyweb.controller.param;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
@@ -8,4 +11,11 @@ import lombok.Data;
|
||||
@Data
|
||||
public class FileUploadParam {
|
||||
private String remark;
|
||||
|
||||
// 上传文件,字段名称对应表单中的name属性值
|
||||
@NotNull(message = "文件1不能为空")
|
||||
private MultipartFile file1;
|
||||
|
||||
@NotNull(message = "文件2不能为空")
|
||||
private MultipartFile file2;
|
||||
}
|
||||
|
@@ -0,0 +1,12 @@
|
||||
package com.gitee.sop.storyweb.controller.param;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author tanghc
|
||||
*/
|
||||
@Data
|
||||
public class FileUploadParam2 {
|
||||
private String remark;
|
||||
|
||||
}
|
Reference in New Issue
Block a user