当前位置:  开发笔记 > 编程语言 > 正文

从浏览器上传多个文件的最佳方式

如何解决《从浏览器上传多个文件的最佳方式》经验,为你挑选了2个好方法。

我正在开发一个Web应用程序.用户可以使用HTTP协议上传文件.经典的HTML文件上传控件和用于上传文件的Java小程序之间有一个选择.

经典的HTML文件上传不是很好,因为你一次只能选择一个文件,而且在实际上传过程中很难获得任何进度指示(我最终使用定时器刷新了一个进度指示器,其中包含从中获取的数据)服务器通过AJAX调用).优点:它始终有效.

使用Java applet,我可以做更多的事情:一次选择多个文件(甚至是文件夹),压缩文件,获得真正的进度条,在applet上拖放文件等等......
但是有一些缺点:

让它在Mac Safari和Mac Firefox上正常工作是一场噩梦(感谢Liveconnect)

用户界面并不完全是原生用户界面,有些人会注意到这一点

小程序没有应有的响应(可能是我的错,但一切看起来都不错)

UrlConnection使用HTTPS 的Java 类中存在错误,因此我使用Apache通用HTTP客户端来执行实际的HTTP上载.这是一个非常大的包,减慢了.jar文件的下载速度

Apache公共HTTP客户端有时会遇到代理问题

Java运行时非常大

我一直在维护这个Java applet但是现在我已经厌倦了所有的缺点,并考虑编写/购买一个全新的组件来上传这些文件.

如果您有以下要求:

通过HTTP或HTTPS轻松地从浏览器上传多个文件

压缩文件以减少上传时间

上传应该可以在任何平台上使用本机UI

必须能够上传大文件,至少2gb

你对这项技术有全权委托

你会使用什么技术/组件?


编辑:

拖放组件上的文件将是一个很好的加分.

看起来有很多与Flash Player的错误有关的问题(swfupload已知问题).适当的Mac支持和通过身份验证的代理上传是我不能没有的选择.这可能会排除所有基于Flash的选项:-(.

我排除了所有HTML/Javascript选项,因为您不能使用经典HTML控件一次选择多个文件.当您想要选择文件夹中的多个文件时,单击"浏览"按钮的n倍是很痛苦的.

Gautam.. 5

我最近在Silverlight中实现了一些功能.

基本上使用HttpWebRequest将一大块数据发送到GenericHandler.

在第一篇文章中,发送了4KB的数据.在第二块,我发送另一个4K块.

当收到第二个块时,我计算它在第一个和第二个块之间的往返行程,所以现在发送的第三个块将知道增加速度.

使用这种方法,我可以上传任何大小的文件,我可以恢复.

我发送的每个帖子都是这个信息:

[参数] [FILEDATA]

这里,参数包含以下内容:[Chunk#] [Filename] [Session ID]

收到每个块之后,我会向Silverlight发回一个回复,说明它的速度有多快,现在它可以发送更大的块.

很难在没有代码的情况下进行解释,但基本上我是这样做的.

在某些时候,我将快速撰写关于我如何做到这一点的文章.



1> Gautam..:

我最近在Silverlight中实现了一些功能.

基本上使用HttpWebRequest将一大块数据发送到GenericHandler.

在第一篇文章中,发送了4KB的数据.在第二块,我发送另一个4K块.

当收到第二个块时,我计算它在第一个和第二个块之间的往返行程,所以现在发送的第三个块将知道增加速度.

使用这种方法,我可以上传任何大小的文件,我可以恢复.

我发送的每个帖子都是这个信息:

[参数] [FILEDATA]

这里,参数包含以下内容:[Chunk#] [Filename] [Session ID]

收到每个块之后,我会向Silverlight发回一个回复,说明它的速度有多快,现在它可以发送更大的块.

很难在没有代码的情况下进行解释,但基本上我是这样做的.

在某些时候,我将快速撰写关于我如何做到这一点的文章.



2> slf..:

我从来没有将它用于2GB大小的文件,但YUI文件上传器在以前的项目上工作得很好.您可能也对此jQuery插件感兴趣.

也就是说,我仍然认为Java Applet是要走的路.我认为你最终会获得比预期更少的可移植性和UI问题,并且Drag/Drop工作得很好.为了记录,Box.net使用Java Applet进行多文件快速上传.

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有