3

我正在为一个朋友构建一个 web 应用程序,用户界面应该允许用户按下按钮,并且它应该以某种方式将他们插入的 CD-ROM/DVD 的所有内容上传到服务器。

我不能真正拥有浏览器的标准“选择文件...”,因为 CD 内有许多不同的文件,位于许多不同的文件夹下。所以我不能让我的用户单独选择所有文件——即使我实现了 HTML5 多选,他们仍然必须浏览所有子文件夹(可能有几个级别)。而且这需要在 IE8 上工作,所以多选不起作用。

实现这一目标的最佳选择是什么?我正在寻找最透明的解决方案——下载 Java 小程序或外部插件的开销太大。flash能做到这样吗?Flash 仍然是一个插件,但它是可以接受的,因为它在很多地方都使用过,并且不需要像 Java 小程序那样需要“运行许可”。

谢谢

4

3 回答 3

3

emmm……挺有意思的

无论如何,如果要依靠 Java Applet 解决方案......我认为不应该有一些单一的 API 来处理所有提到的问题

根据您的任务,这里是某种解决方案组合......

我不能真正拥有浏览器的标准“选择文件...”,
因为 CD 内有许多不同的文件,位于许多
不同的文件夹下。

  • 如果您有可启动的 CD 或其他东西……在这种情况下,我可以建议您使用 CD 的 *.iso 映像文件生成。您可以为此使用JIIC lib

  • ...关于上传,我可以建议使用HttpClient
    (在客户端)+ FileUpload(在 servlet 端),这将允许上传 ~2Gb 重量文​​件... (HttpClient 提示)在您的 CD 中(读取大文件的情况)我确实建议覆盖 FileBody.writeTo(OutputStream) 方法来设置块读取文件支持

  • 或者如果您生成的文件真的很大,您还可以使用 RandomAccessFile 按索引读取/写入文件,请查看readFully() 方法

还有一件事情...

...所以我不能让我的用户单独选择所有文件——即使我实现了 HTML5 多选,他们仍然必须浏览所有子文件夹(可能有几个级别)。而且这需要在 IE8 上工作,所以多选不起作用。

  • 在 Java Applet 中它可以工作 :) 如果您只需要某种多选(并且它不是可引导 CD 或其他东西),您可以使用 Swing 的JFileChooser来完成此任务。仔细看看setMultiSelectionEnabled(boolean) 之类的方法...

    • ...关于

'...他们仍然需要浏览所有子文件夹(可能有几个级别)'

...您可以简单地(不上传文件夹)但预先打包这些级别,让我们说一个 zip 文件以将 zip 文件上传到服务器(如果我在这里错了,请纠正我,因为级别的概念在你现在的问题)


尽管如此,了解更多细节会很有趣,因为对于网络应用程序来说,上传整个 CD 的任务非常罕见......通常,这是一个相当沉重的东西:S


报告该答案是否有帮助

于 2013-01-25T04:01:10.617 回答
1

我已经使用了一段时间的精细上传器,它对于完整文件夹非常有效。它是完整的 html/javascript。

您必须将“webkitdirectory”和“mozdirectory”添加到 中<input>,并且维护目录结构可能很困难,但并非不可克服。您必须使用 onUpload 回调,然后获得对文件引用对象的访问权限,该对象应该有一个 'relativePath'您可以使用添加到上传者的发布数据以供服务器使用。

用户只能使用 firefox 或 chrome,并选择他们的目录(或拖动它!)。

希望这可以帮助。

于 2013-01-23T10:56:33.503 回答
0

对于 Chrome,您可以依赖 HTML5 文件系统 API。您还可以读取目录和子目录的内容。但我不确定是否有任何解决方案可以为 IE 做同样的事情。

此链接可能对您有所帮助 http://www.html5rocks.com/en/tutorials/file/filesystem/ http://www.w3.org/TR/file-system-api/

于 2013-01-22T06:55:58.370 回答