当前位置: 首页 > 面试题库 >

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

郎泰平
2023-03-14
问题内容

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

经典的HTML文件上传效果不好,因为您一次只能选择一个文件,并且在实际上传过程中很难获得任何进度指示(我最终使用计时器刷新了进度指示器,并从服务器通过AJAX调用)。优点:始终有效。

随着Java小程序,我可以做更多的事情:选择多个文件一次(甚至一个文件夹),压缩文件,得到一个真正的进度条,拖放文件的小程序,等等。
但也有少数缺点:

  • 要使其在Mac Safari和Mac Firefox上正常运行是一场噩梦(感谢Liveconnect)
  • 用户界面并不完全是本机用户界面,有人注意到
  • applet的响应速度不够理想(可能是我的错,但对我而言一切正常)
  • UrlConnectionHTTPS 的Java 类中存在错误,因此我使用Apache通用HTTP客户端进行实际的HTTP上传。这是一个很大的软件包,并且会减慢.jar文件的下载速度
  • Apache通用HTTP客户端有时难以通过代理
  • Java运行时很大

我一直在维护此Java applet一段时间,但现在我已经受够了所有缺点,并考虑编写/购买一个全新的组件来上传这些文件。

如果您有以下要求:

  • 通过HTTP或HTTPS从浏览器轻松上传多个文件
  • 压缩文件以减少上传时间
  • 上载应能在任何平台上使用本机UI
  • 必须能够上传大文件,至少2GB
  • 您对技术有全面的了解

您将使用什么技术/组件?

编辑:

  • 将文件拖放到组件上将是一个不错的选择。
  • 看起来有很多与Flash Player的错误相关的问题(swfupload已知问题)。正确的Mac支持和通过带有身份验证的代理上传是我不能没有的选择。这可能会排除所有基于Flash的选项:-(。
  • 我排除所有仅HTML / JavaScript的选项,因为使用经典HTML控件一次不能选择多个文件。要在一个文件夹中选择多个文件时,单击n次“浏览”按钮是很痛苦的。

问题答案:

好的,这是我的看法

我使用swfupload进行了一些测试,并且我以前有使用Java的经验,我的结论是, 无论使用哪种技术,都没有完美的解决方案在浏览器上进行上传
:在上传大文件时,您总是会遇到错误,通过代理,使用ssl等…

但是:

  • 我认为Flash上​​载程序(la swfupload)非常轻巧,不需要用户授权,并且具有本机界面,这真的很酷
  • 一个Java上传器需要授权,但是您可以对用户选择的文件进行任何操作(如果需要,也可以压缩),并且拖放操作效果很好。尽管要为一些史诗般的错误调试做好准备。
  • 只要我希望这是真正的答案,我就不会改变使用Silverlight的方法,尽管该技术还很年轻,所以…如果有机会摆弄我,我会编辑这篇文章。与Silverlight

感谢所有的答案 !!



 类似资料:
  • 我们目前有一个小的web应用程序,其中一部分是文件上传。目前,我们在客户端上使用Plupload,并启用了分块功能,以允许上传大型文件。这些文件被保存在应用服务器上,当它们出现时,这些块被追加。 现在,我们正在使用AmazonS3来存储文件,并有可能使用多个应用服务器。我发现很难处理这些大块。我试着以他们为榜样,但我遇到了问题。我尝试的主要内容是这样的: 我的问题是我需要知道上传的块。当我从上传的

  • 问题内容: 是否可以使用ajax将文件从浏览器升级到FTP服务器? 问题答案: 不会。浏览器不提供允许从JavaScript写入FTP的API。 您可以将文件发布到HTTP端点,然后使用服务器端代码将其推送到FTP服务器。

  • 本文向大家介绍跨浏览器拖放HTML文件上传?,包括了跨浏览器拖放HTML文件上传?的使用技巧和注意事项,需要的朋友参考一下 对于跨浏览器的HTML File Uploader,请使用FileDrop。它几乎可以在所有现代Web浏览器上使用。 根据官方规范- FileDrop是一个独立的跨浏览器,用于HTML5,旧版,AJAX,拖放,JavaScript文件上传

  • 有没有办法通过网络浏览器上传大文件(超过80 Gb)?以前我一直在使用plupload上传文件(img、png、jpg),但它似乎不适用于较大的文件。我也想知道如何实现一个网页,用户可以上传像Mega.co.nz或Drive.google.com。如果使用web开发工具无法做到这一点,有谁能指导我如何划分 谢谢。

  • 我试过XMLHttpRequest的PUT请求。有一个浏览器端的限制,不允许我上传大于2GB的文件。然后我尝试了一个不需要Javascript端预处理的超文本标记语言表单的POST请求。它在一次操作中有5GB的上传大小限制。 AWS建议在较大的上传场景中进行多部分上传。这需要将文件分成小块,然后上传成小块。当文件大小大于10GB时,如何从浏览器中正确地执行此操作。

  • 是否可以创建一个html表单,允许Web用户直接将文件上传到azure blob store,而不使用其他服务器作为中介?S3和GAW blob store都允许这样做,但我找不到对azure blob存储的任何支持。