【问题标题】:Rails' Paperclip gem POSTing instead of PUTting when uploading .zip file上传 .zip 文件时,Rails 的 Paperclip gem POSTing 而不是 PUTting
【发布时间】:2012-08-18 07:31:05
【问题描述】:

我有一个表格(Rails 3.2.8,Paperclip 3.1.4),带有两个回形针附件,用于具有两个 has_attached_files 的模型。一个是图像,另一个是通用文件,通常是 .zip 文件。

只要我不尝试上传 .zip 文件,一切正常。上传任何大小的 .zip 文件(原始大小为 80 MB,但尝试 3 MB 以查看是否存在大小问题)会导致表单 POST 而不是 PUT,并且 Rails 会引发路由错误。

表单方法是 POST,但将 Rails 的隐藏 _method 值设置为“put”,这可以正常工作,并且在我不尝试上传 .zip 文件时会导致 PUT。

表单确实正确设置了 enctype 'multipart' 位。

知道是什么原因造成的吗?

【问题讨论】:

  • 尝试几种不同的文件类型,看看是否有区别。另外,如果它应该是一个 PUT 调用,为什么不直接用 :method => "PUT" 明确定义呢?
  • 很高兴看到代码。如果您解决了这个答案,可能会对其他人有所帮助。
  • 这种情况只发生在 .zip 文件中吗?您是否尝试过其他文件类型?另外,你在服务器上的帖子限制是多少?也许你的图像和 zip 都超过了它,尝试两个小文件(比如......一个 100k 的图像和一个 100k 的 zip)
  • @Solomon 我猜是这样,克里斯指的是 html 输出。
  • 我同意 pjammer,请添加一些代码以解决您的问题。如果需要改进它,请编辑您的 SO 问题。

标签: ruby-on-rails zip paperclip


【解决方案1】:

文件听起来很大。仔细检查实际参数是否已进入请求。根据文件的大小,我也可以在本地获取它。

我看到的效果是 rails 基本上没有参数。由于 PUT 实际上是一个带有隐藏元素的帖子,因此 rails 只会看到 POST,因为参数被删除了。

我实际上不确定是什么原因造成的。我想可能是本地的webserver,所以你可能需要配置nginx什么的。我从来没有在 heroku 或任何东西上发生过这种情况,但如果文件足够大,总是在本地发生。

另外请注意,webrick 的请求负载限制非常小。所以不要用那个。使用“瘦”,因为它很容易替换。

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 2012-03-10
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多