【发布时间】:2014-03-23 10:12:01
【问题描述】:
我需要将一些二进制文件从通用 java 客户端传输到使用 servlet 技术的服务器。
问题来了,因为我需要检查一些随文件发送给我的数据以授权上传。此外,我还需要有关该文件的其他信息以表征它(名称,作者,...)。
我的想法是:
(A) 使用通过默认输入流接收请求的 GenericServlet。它将读取预先格式化的数据结构,然后如果数据正常,它将读取并保存文件
-
(B) 使用 HttpServlet 并进行通常的 http 文件上传(这将需要客户端环境中的 http 支持)并使用一些 post 属性来获取附加数据。
李>
现在的问题: 选项A:
有一种方法可以在文件之前获取初始数据,以便首先检查它们,然后仅在数据正常时才允许文件传输,这样可以限制内存使用量不好?
如果文件很长并且以 N 部分到达服务器,并且 servlet 在客户端完成发送所有 N 部分之前检查附加信息发现它们不好,有没有办法通过在转移过程中回答客户以打破“坏”和繁重的请求来中断转移?
我能否在同一个请求中将多个 Java 对象(如本例中的自定义 FileInfo 类)与二进制文件一起传输?
选项 B:
始终使用 http 是一种好习惯吗?
一旦设置了多部分数据类型,文件内容作为post变量的内容发送?
谢谢
【问题讨论】:
-
您可以在开始上传之前在 Javascript 中检查文件大小客户端developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/… 其余的,如果可能的话,我会感到惊讶。
-
客户端一般不应该是html/js。无论如何,我更喜欢验证数据服务器端,因为它更安全,我需要检查和存储更多数据