我正在为朋友构建一个webapp,其中用户界面应该允许用户按下按钮,并且它应该以某种方式将他们插入的CD-ROM / DVD的所有内容上传到服务器。
我无法真正拥有浏览器的标准“选择文件...”,因为CD内有许多不同的文件,在许多不同的文件夹下。所以我无法让我的用户单独选择所有文件 - 即使我实现HTML5多选,他们仍然需要浏览所有子文件夹(可能有几个级别)。而且这需要在IE8上运行,因此多选不起作用。
实现这一目标的最佳选择是什么?我正在寻找最透明的解决方案 - 下载Java applet或外部插件会带来太大的开销。闪存可以达到这样的效果吗? Flash仍然是一个插件,但它是可以接受的,因为它在许多地方使用,并且不像Java小程序那样需要“运行权限”。
由于
答案 0 :(得分:3)
嗯......非常有趣
无论如何,如果要依靠Java Applet解决方案......我认为不应该有一些单一的API来处理所有提到的点
根据你的任务,这里有一些解决方案组合...
我真的没有浏览器的标准“选择文件...”,
因为CD里面有很多不同的文件,很多下 不同的文件夹。
如果您有可引导的CD或其他东西......在这种情况下,我可以提供建议 使用* .iso图像文件生成你的CD。您可以使用JIIC lib 为此
...关于上传,我可以建议使用HttpClient
(在客户端)+ FileUpload(在servlet端)将允许
上传〜2Gb权重文件... (HttpClient提示)在你的CD中(大案例)
文件阅读)我建议覆盖FileBody.writeTo(OutputStream)
设置reading file by chunks支持的方法
或者如果您生成的文件非常庞大,您还可以使用RandomAccessFile 按索引读取/写入文件readFully() method
还有一件事......
...所以我不能让我的用户单独选择所有文件 - 甚至 如果我实现HTML5多选,他们仍然必须 浏览所有子文件夹(可能有几个级别)。 而且这需要在IE8上运行,因此多选不起作用。
在Java Applet中,将工作:)如果你只是需要某种 你可以使用多种选择(它不是可引导的CD或其他东西) Swing的JFileChooser执行此任务。仔细看看方法 像setMultiSelectionEnabled(boolean) ...
'......他们仍然需要浏览所有子文件夹 (可能有几个级别)'
...你可以简单地(不是上传文件夹)但预先打包这些级别让我们说一个zip文件将zip文件上传到服务器(如果我错了,请纠正我,因为<现在你的问题中描述的“强>级别”并不是很明确。。
尽管如此,知道更多细节会很有趣,因为网络应用程序上传整张CD是非常罕见的任务......通常情况下,它是一个非常重要的东西:S
报告该答案是否有用
答案 1 :(得分:1)
我已经使用fine uploader一段时间了,它对于完整文件夹工作得很好。它是完整的html / javascript。
你必须将“webkitdirectory”和“mozdirectory”添加到<input>
,并且维护目录结构可能很难,但不是不可理解的。你必须使用onUpload回调,然后获得对文件引用对象的访问权限,应该有一个'relativePath',你可以使用它添加到上传者的帖子数据供服务器使用。
用户必须只使用firefox或chrome,并选择他们的目录(或拖动它!)。
希望这有帮助。
答案 2 :(得分:0)
对于Chrome,您可以依赖HTML5文件系统API。您也可以读取目录和子目录的内容。但我不确定是否有任何解决方案为IE做同样的事情。
此链接可能对您有所帮助 http://www.html5rocks.com/en/tutorials/file/filesystem/ http://www.w3.org/TR/file-system-api/