【问题标题】:Best strategy for uploading multiple files上传多个文件的最佳策略
【发布时间】:2012-01-22 17:30:19
【问题描述】:

我有一个可以附加一个或多个(大)文件的表格。我想实现以下目标:

  • 必须向用户显示文件上传进度

  • 上传过程可以随时被用户中断

  • 如果提交后表单上的其他数据出现错误,则不应再次请求文件;换句话说,即使表单可以多次重新提交,文件也只会上传一次

  • 如果文件和表单数据通过Ajax分开独立发布,上传但未使用的文件应该被自动清除

  • 安全注意事项:例如如果文件是单独发送的,那么恶意攻击者应该无法通过知道会话 ID 或浏览器中可用的其他信息来覆盖服务器上的文件

  • 浏览器要求:最新版本的 Safari、Chrome 和 Firefox; IE9是可取的

  • 服务器端:请不要推荐第三方框架;该解决方案应该如此通用,以至于任何人都可以用他们最喜欢的语言来实现它——Python、Ruby、PHP、Perl 等(可能还有 JavaScript)

考虑到上述情况,实现此功能有哪些提示、技巧和最佳实践?

【问题讨论】:

  • 所以您希望您的用户能够在选择文件窗口中选择多个文件,对吧?
  • @Julien Bourdon:这不是必需的,尽管我知道在大多数现代浏览器中都是可能的。

标签: php javascript forms file-upload xmlhttprequest


【解决方案1】:

swfupload 非常棒。有据可查,效果很好。 http://swfupload.org/

【讨论】:

  • 这就是我要提出的答案。根据我自己的经验,这是唯一可靠的解决方案。
  • 据我了解,它不包括服务器端。
  • 是的,但它也不会对服务器端施加任何要求或限制,这就是我阅读您最后一个项目符号的方式。你可以使用任何你想要的东西。
  • 另外,如果您转到下载选项卡,您会看到一些服务器端代码已针对各种后端实现。当然,您可以从这些文件中提取您需要的内容,尤其是 CakePHP 下载,因为您建议您使用 PHP。
【解决方案2】:

如果您的用户使用最新版本的浏览器,您可以使用 JavaScript 访问 HTML5 文件。

你可以在这里寻找开始http://www.html5rocks.com/en/tutorials/file/dndfiles/

您也可以在这里查看我的 ruby​​ on rails 插件(目前还没有文档,但 JS 代码相当简单)http://github.com/Ximik/simple_attachments

【讨论】:

  • 我以前看过这个,这是一个很好的教程,但它没有谈论服务器端策略,例如在哪里以及如何存储(和清除)文件,如何在多次重新提交的情况下将它们绑定到表单实例等等。
  • 如果你使用rails的话,真的看我的代码。大部分工作都在那里完成或将在几天内完成。
【解决方案3】:

我觉得这个非常棒,如果你可以使用 jQuery - http://blueimp.github.com/jQuery-File-Upload/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    相关资源
    最近更新 更多