【问题标题】:Better file uploading approach: HTTP post multipart or HTTP put?更好的文件上传方法:HTTP post multipart 还是 HTTP put?
【发布时间】:2012-04-03 06:04:20
【问题描述】:

用例:将一个简单的图像文件上传到服务器,供客户端稍后检索

  1. 为该工作指定一个FTP Server

  2. HTTP Put:可以直接上传文件到服务器,不需要服务器端
    处理字节流的组件。

  3. HTTP Post:由服务器端组件处理字节流。

【问题讨论】:

  • 这就像问“纸还是塑料”而不解释解决方案的限制条件。

标签: http


【解决方案1】:

由于潜在的安全问题,我认为在公共网站上安全地使用 PUT 比使用 POST 需要更多的努力(并且不太常见)。见http://bitworking.org/news/PUT_SaferOrDangerous

OTOH,我认为有很多资源可以安全地使用 POST 上传文件并在服务器端脚本中检查它们,这是更常见的做法。

【讨论】:

    【解决方案2】:

    PUT 仅在您知道要输入的 URL 时才适用。

    你也可以这样做:

    4) POST 获取一个 URL,然后您将 PUT 文件指向该 URL。

    编辑:你将如何让 HTTP 服务器决定是否可以接受特定的 PUT 请求?

    【讨论】:

    • 让我们假设,“放置”文件的页面只能由管理员记录的会话访问,因此任何“放置”请求都符合条件。
    • 嗯...页面“来自”? HTTP 请求在技术上是无状态的,并且可以突然到达。您是否依赖 cookie 来获取身份验证令牌?
    • 另外:PUT 到特定的 URL 将(至少从 RESTful 的角度来看)覆盖已经存在的内容。我不确定 Apache 和其他服务器默认如何处理这个问题,但是如果您的客户端不想覆盖现有内容,它需要首先检查那里是否存在某些内容。
    • 是的,我依赖 cookie 进行身份验证。
    【解决方案3】:

    我通常(通过 PHP)做的是 HTTP POST。

    并使用 PHP 的 move_uploaded_file() 将其发送到我想要的任何目的地。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-05
      • 1970-01-01
      • 2013-10-03
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 2012-04-04
      相关资源
      最近更新 更多