代码正在传输一个C#
大的图像文件,将其分成块,并且它还将块顺序作为每个请求中的请求参数发送。我希望在 Struts2 动作中接收文件。我看到的大多数示例都Apache Commons File Upload
用于接收上传的文件,但它假设文件是<http type="file"/>
作为多部分请求传输的。甚至流式 API 也假设了这一点。
目前,我正在考虑将每个请求的块存储在从块orderNumber参数接收到的索引处的数组中。收到所有块后,我会将文件写入系统。但它有一些问题。我将不得不跨多个请求维护数组的状态,并且动作类是stateless
. 另外,我如何发现特定的块是最后一个?(我可以使用最后一个块发送请求参数,但如果有其他更清洁的方式)
编辑 - 图像类型可以不同,EOF 标记始终是一个常量查询字符串参数,图像总是分成固定大小的块(缓冲区为 1024 字节,可以更改),除了最后一个。可以更改 C# 程序。使用 C# 代码的用户已经登录,并且可以同时传输不同的文件。崩溃后恢复不是必需的。
实际上,C#程序只是一个Silverlight
插件,用于方便拖放文件,并将它们发送到服务器(仅适用于IE,因为IE不支持拖放文件)