使用JAVA中的jquery文件上传插件以块的形式上传文件

Awe*_*ome 8 java upload jquery file blueimp

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

我的服务器是Weblogic在一个服务器端编写代码Servlet.

这是我的问题:

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

nhy*_*ted 5

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

维基

示例PHP 上传处理程序支持开箱即用的分块上传。

为了支持分块上传,上传处理程序使用 Content-Range 标头,它由插件为每个块传输。

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

服务器端:如何知道请求是否是最后一个块?

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

在 W3C 的网站上查看节中给出的示例。

服务器端如何将所有接收到的块数据写入单个文件?

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

我如何识别与同一文件相关的分块请求,因为每个块都将作为一个单独的请求发送?

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

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