파일 업로드(업로드)
WebMVC 모듈은 파일 업로드 처리 및 업로드된 파일 작업이 매우 간단합니다. 주석을 통해 쉽게 수행할 수 있습니다.
@FileUpload: 컨트롤러 메서드가 업로드된 파일 스트림을 처리해야 한다고 선언합니다. , 주목해야 할 것은 파일 업로드 처리를 위한 양식 enctype 속성입니다.
IUploadFileWrapper: 업로드된 파일을 작동하기 위한 일련의 방법을 제공하는 업로드 파일 래퍼 인터페이스<form action="/demo/upload" method="POST" enctype="multipart/form-data"> ...... </form>
- 샘플 코드:
@Controller @RequestMapping("/demo) public class UploadController { // 处理单文件上传 @RequestMapping(value = "/upload", method = Type.HttpMethod.POST) @FileUpload public IView doUpload(@RequestParam IUploadFileWrapper file) throws Exception { // 获取文件名称 file.getName(); // 获取文件大小 file.getSize(); // 获取完整的文件名及路径 file.getPath(); // 获取文件Content-Type file.getContentType(); // 转移文件 file.transferTo(new File("/temp", file.getName())); // 保存文件 file.writeTo(new File("/temp", file.getName()); // 删除文件 file.delete(); // 获取文件输入流对象 file.getInputStream(); // 获取文件输出流对象 file.getOutputStream(); return View.nullView(); } // 处理多文件上传 @RequestMapping(value = "/uploads", method = Type.HttpMethod.POST) @FileUpload public IView doUpload(@RequestParam IUploadFileWrapper[] files) throws Exception { // ...... return View.nullView(); } }
파일 업로드 관련 구성 매개변수:
#------------------------------------- # 文件上传配置参数 #------------------------------------- # 文件上传临时目录,为空则默认使用:System.getProperty("java.io.tmpdir") ymp.configs.webmvc.upload_temp_dir= # 上传文件大小最大值(字节),默认值:-1(注:10485760 = 10M) ymp.configs.webmvc.upload_file_size_max= # 上传文件总量大小最大值(字节), 默认值:-1(注:10485760 = 10M) ymp.configs.webmvc.upload_total_size_max= # 内存缓冲区的大小,默认值: 10240字节(=10K),即如果文件大于10K,将使用临时文件缓存上传文件 ymp.configs.webmvc.upload_size_threshold= # 文件上传状态监听器,可选参数,默认值为空 ymp.configs.webmvc.upload_file_listener_class=
파일 업로드 상태 리스너(upload_file_listener_class) 구성:
public class UploadProgressListener implements ProgressListener { public void update(long pBytesRead, long pContentLength, int pItems) { if (pContentLength == 0) { return; } // 计算上传进度百分比 double percent = (double) pBytesRead / (double) pContentLength; // 将百分比存储在用户会话中 WebContext.getContext().getSession().put("upload_progress", percent); } }
인터페이스 구현 클래스를 ymp.configs로 구성합니다. webmvc.upload_file_listener_class 매개변수 ;
- Ajax 시간 제한 라운드 로빈 방식을 통해 세션의 진행률 값을 가져와서 페이지에 표시합니다.