【问题标题】:Best way to handle file uploads through HTTP通过 HTTP 处理文件上传的最佳方式
【发布时间】:2010-09-26 13:25:22
【问题描述】:

在我看来,使用标准 HTML 输入通过网页上传文件总是很笨拙。如果用户尝试上传一个大文件,它可能会一直持续下去,并且他们不会得到文件实际正在上传的队列。

我尝试过提供一个 gif 图形,它是一个动画图形栏,但它并没有给用户任何关于上传多少的指示。我什至尝试过用 AJAX 做一个进度条,但这些总是很丑陋,而且似乎永远无法正常工作。

这一直是我的许多客户的问题,我经常被问到是否有更好的方法。有时我会为他们提供一个 FTP 站点,以便他们可以在那里上传,但这也不是一个实用的解决方案。

您认为从 HTML 处理 HTTP 文件上传的最佳方式是什么?您在互联网上看到过哪些好的想法/示例?

【问题讨论】:

    标签: html http file-upload


    【解决方案1】:

    有几种通过 HTTP 使用进度条的异步文件传输技术,其中大多数涉及FlashXMLHttpRequest

    【讨论】:

      【解决方案2】:

      可以使用许多客户端控件。

      你可以

      • 构建您自己的 ActiveX 控件。仅限 Windows/IE
      • 使用 Flash 对文件进行排队,并使用标准文件上传协议一次将一个文件上传到服务器。
      • 使用签名的 Java 小程序上传。
      • 编写一个浏览器插件。

      来自谷歌的一些随机链接:

      http://www.element-it.com/MultiPowUpload.aspx

      http://www.codeproject.com/KB/aspnet/FlashUpload.aspx

      http://www.dmxzone.com/forum/go/?36564

      【讨论】:

        【解决方案3】:

        我将在此添加 swfupload。这是一个开源的 Flash 上传器,如果用户没有 Flash,它可以优雅地降级。

        【讨论】:

        • 对我来说似乎不是很优雅。如果他们没有 javascript 或 flash,它会删除按钮。它不会像人们期望的那样回退到文件上传控件。
        【解决方案4】:

        实际上只有一种通过浏览器上传的机制。但是,您可以通过提供一个进度条来显示上传正在进行以及以何种速度显示上传进度,从而对其进行修饰并使其更加用户友好。

        这通常通过将上传表单定位到隐藏的 iframe 并使用 AJAX 调用来找出有多少文件已到达服务器。

        这是一个例子:

        Megaupload

        【讨论】:

          【解决方案5】:

          如果您运行 mod_perl2 apache,则有 Apache2::UploadProgress 模块。这会为 http 上传请求添加一个 id,然后您可以向服务器查询该上传的进度。内置支持在弹出窗口或上传页面中创建 AJAX 进度条。如果您想构建自己的进度显示,您可以将信息以 XML 或 JSON 数据的形式返回。

          【讨论】:

            【解决方案6】:

            YUI Uploader utility 使用基于 Flash 的上传器,有据可查,并且有几个示例供您尝试。我已经在几个项目中使用过它,并且会推荐它。

            【讨论】:

              【解决方案7】:

              我用这个作为一个相当简单和完整的工具。基本源代码很好,如果需要,您可以轻松自定义它。 AJAX File Upload

              【讨论】:

                【解决方案8】:

                有趣,没有人提到Dean BrettleNeatUpload上传组件,它有很多有趣的功能,也可以在MONO上运行

                【讨论】:

                • 想知道为什么有些巨魔投了反对票?我是一个反巨魔,我看不出答案有什么问题。
                猜你喜欢
                • 2011-09-01
                • 2012-07-20
                • 1970-01-01
                • 2023-04-06
                • 1970-01-01
                • 2021-03-04
                • 2013-03-20
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多