以上代码能解决单线程情况,而线程池多线程情况下使用MultipartFile进行异步操作报错,系统找不到指定的文件

C:\Users\ginseng\AppData\Local\Temp\tomcat.6121315196242383180826.8056\work\Tomcat\localhost\ROOT(系统找不到指定的文件)
因为异步情况下,主线程结束后,临时文件会被清空,因此需要通过流的方式来解决

思路回到,想通过重复读取流来解决问题,查了下找到这个:

* 将InputStream中的字节保存到ByteArrayOutputStream中。 private ByteArrayOutputStream byteArrayOutputStream = null; public FileNodeCacheDto() { * 缓存输入流 * @param inputStream public FileNodeCacheDto(InputStream inputStream) { if (Objects.isNull(inputStream)) { return; this.byteArrayOutputStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len; try { while ((len = inputStream.read(buffer)) > -1) { this.byteArrayOutputStream.write(buffer, 0, len); this.byteArrayOutputStream.flush(); } catch (IOException e) { log.error(e.getMessage(), e); public InputStream getCacheInputStream() { if (Objects.isNull(byteArrayOutputStream)) { return null; return new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); @Override public void close() throws Exception { try { this.byteArrayOutputStream.close(); } catch (Exception e) { log.error("销毁byteArrayOutputStream缓存失败", e);

在异步之前把流存储好