gpt4 book ai didi

java - 使用 Chunks 和 Multipart Fileupload 进行文件上传

转载 作者:行者123 更新时间:2023-12-01 21:15:16 26 4
gpt4 key购买 nike

使用 block 上传和MultipartFile上传是否相同。有什么区别?我尝试过使用 Multipartfile 上传。我的要求是上传一个50MB的appx文件到服务器而不让用户等待很长时间。大约需要 2 分钟。

最佳答案

Chunks 和 Multipart 以不同的方式执行相同的操作

block 使上传将整个文件“分割”成小块( block )

这允许将非常大的文件(也可以是 1GB)分割成较小的部分并将它们发送到服务器,而不会出现浏览器中的连接超时问题;然后由服务器端处理 block

您可以使用多个 JS 上传库来存储 block (例如 https://blueimp.github.io/jQuery-File-Upload/http://www.plupload.com/ 等)

Multipart 则一次性上传文件;如果文件是 1MB,则上传所有 1MB;如果文件是 1GB,则加载所有 1GB

关于传输速度,我想这与带宽和互联网连接有关

希望对你有帮助

服务器端 block 管理示例

正如我告诉你的,由服务器端来管理 block ;我强烈避免将其存储在内存块中,因为您应该分配大量内存(如果文件是 1GB,您应该为每次上传分配 1GB)

在我的旧项目中,我使用了 plupload,这是我如何在服务器端管理 block 的摘录(注意:使用 Spring 完成的代码)

RequestMapping(method = { RequestMethod.POST }, value = { "/plupload" })
public ResponseEntity<List<UploadMediaResultDto>> uploadMedia(
@RequestParam(required = true, value = "file") MultipartFile file,
@RequestParam(required = false, value = "name") String name,
@RequestParam(required = false, value = "chunks") Integer chunks,
@RequestParam(required = false, value = "chunk") Integer chunk)
{
boolean fullFile = false;
File theFile = new File(filePath);
if (chunk != null && chunks != null && (chunk == 0 && chunks == 1))
{
fullFile = true;
}
if (!fullFile)
{
FileUtils.writeByteArrayToFile(theFile, file.getBytes(), append);
}
else
{
FileUtils.writeByteArrayToFile(theFile, file.getBytes());
}
}

正如你所看到的,我首先检查是否收到整个文件;如果不是,我以附加模式写入文件,否则我总共写入

我希望这有用

安杰洛

关于java - 使用 Chunks 和 Multipart Fileupload 进行文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40287355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com