欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 博客摘录「 SpringBoot大文件(百M以上)的上传下载实现技术」2024年8月2日

博客摘录「 SpringBoot大文件(百M以上)的上传下载实现技术」2024年8月2日

2024/10/25 4:21:56 来源:https://blog.csdn.net/qq_39126115/article/details/140873819  浏览:    关键词:博客摘录「 SpringBoot大文件(百M以上)的上传下载实现技术」2024年8月2日

上传大附件问题如何设计?大附件上传时如果没有进度条,用户以为是系统的bug。需要将文件截断成文件分片,逐个上传分片;最后一个步骤是将文件分片合并成一个文件后上传的ftp服务器。上传分片接口如下所示。

@ResponseBody
@PostMapping(value = "/upload")
public Result<?> upload(@RequestParam("file") MultipartFile multipartFile, HteAttachInfoVo attachInfoVo, HttpServletRequest request, HttpServletResponse response) throws Exception {try {HteAttachInfoVo vo = null;String tempPath = com.haday.tp.attachment.core.util.FileUtil.concatPath(System.getProperty("java.io.tmpdir"), AttachConstants.TEMP_PATH, IdUtil.fastSimpleUUID(), multipartFile.getOriginalFilename());File tempFile = new File(tempPath);if (!tempFile.getParentFile().exists() && !tempFile.getParentFile().mkdirs()) {return Result.error("无法创建临时文件:" + tempPath);}try{multipartFile.transferTo(tempFile);vo = attachInfoService.uploadChunk(tempFile, attachInfoVo);response.setStatus(HttpServletResponse.SC_OK);} catch (Exception e) {e.printStackTrace();log.error("上传文件失败:{}", e.getMessage());response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);return Result.error("上传文件失败:"+e.getMessage());} finally {}return Result.OK(vo);}catch (Exception e){response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);return Result.error("上传文件失败:"+e.getMessage());}}

下载时,将分片的byte按照序号先后写入输出流直到最后一个分片为止。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com