gpt4 book ai didi

java - 在 JAVA 中使用 jquery 文件上传插件分块上传文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:00 24 4
gpt4 key购买 nike

尝试使用 blueimp JQuery 文件上传插件上传大文件(大于 1 GB)。发现使用 maxChunkSize 配置允许从客户端以 block 的形式上传文件。服务器,我们可以使用 Content-RangeContent-Disposition header 获取 block 大小和文件名。

我的服务器是 Weblogic 并在 Servlet 中编写服务器端代码。

这是我的问题:

  1. 服务器端:如何知道请求是不是最后一个 block ?
  2. 服务器端如何将接收到的所有chunks数据写入单个文件?
  3. 我如何识别分块请求与同一文件相关,因为每个 block 都将作为单独的请求发送?

最佳答案

查看 github 上插件的 wiki - 它有一个关于分块文件上传的部分。

来自wiki :

The example PHP upload handler supports chunked uploads out of the box.

To support chunked uploads, the upload handler makes use of the Content-Range header, which is transmitted by the plugin for each chunk.

检查上面链接的示例 PHP 代码。

Server side: How to know that the request is last chunk or not ?

每个 Content-Range 请求 header 将包含该请求中包含的文件的字节范围以及文件的总字节数。因此,您可以根据总字节数检查范围的结束值,以确定请求是否包含最后一个 block 。

检查 this 中给出的示例W3C 网站上的部分。

Server side How to write all the received chunks data into single file ?

您可以将内存中的所有 block 收集到一个数组中,然后一次性将它们写入一个文件——但这对于较大的文件来说效率不高。 Java 的 IO API 提供了通过提供初始偏移量来写入文件部分的方法。检查this题。

How can I identify chunked requests are related to same file, since each chunk will send as a individual request ?

检查每个请求中的 Content-Range header - 如果请求具有该 header ,则它是许多 block 上传请求之一。使用 header 的值,您可以确定该请求中包含文件的哪个部分/部分。

此外,请求中的 Content-Disposition header 将包含文件名,您可以使用该文件名链接同一文件的各种请求。

关于java - 在 JAVA 中使用 jquery 文件上传插件分块上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32390775/

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