异步处理上传的文件MultipartFile 要复制到自己的目录。

原创
02/05 14:57
阅读数 1K

上传文件的例子如下:

上传文件的请求类:

@Getter
@Setter
public class UploadRequest {
	@NotNull
	private MultipartFile csvFile;

}

上传文件的代码:

	@PostMapping("/upload")
	public void create(@Valid UploadRequest req){
		//异步处理
		 asyncService.doSomething(req);
	}

说明:

这个MultipartFile会在整个请求结束之后就被删除,也就是删除临时文件。所以在异步代码中需要把MultipartFile对应的文件复制到自己的目录,然后再处理文件。

MultipartFile 类的注释上面也说明了这一点。否则会出现异常类似/tmp/MultiPart13841949534895964535 (No such file or directory)

MultipartFile 的注释如下:

/**
 * A representation of an uploaded file received in a multipart request.(多部分请求中收到的上载文件的表示形式。)
 *
 * <p>The file contents are either stored in memory or temporarily on disk.(文件内容要么存储在内存中,要么临时存储在磁盘上。)
 * In either case, the user is responsible for copying file contents to a
 * session-level or persistent store as and if desired. The temporary storage
 * will be cleared at the end of request processing.(无论哪种情况,用户都有责任将文件内容复制到
  会话级别或持久性存储(如果需要)。 临时存储将在请求处理结束时清除。)
 *
 * @author Juergen Hoeller
 * @author Trevor D. Cook
 * @since 29.09.2003
 * @see org.springframework.web.multipart.MultipartHttpServletRequest
 * @see org.springframework.web.multipart.MultipartResolver
 */
public interface MultipartFile extends InputStreamSource {
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部