0

在将大图像上传到服务器时,我一直在努力解决这个奇怪的问题。我在客户端使用blueimp文件图像上传,服务器是带有carrierwave的Rails 4来处理图像(认为它似乎无论如何都没有得到它)​​。

只要图像小于 1.2 MB,一切正常。但是一旦图像大于这个,我就会从服务器而不是正常的响应中得到这个响应:

HTTP/1.1 500 Internal Server Error
Content-Type: text/html; charset=utf8
X-Pow-Template: error_starting_application
Connection: keep-alive
Transfer-Encoding: chunked

根据 development.log,服务器正在执行一个简单的“Completed 201 Created in 1402ms”,正如 routes.rb 中定义的那样(尽管没有执行任何操作)。发送到服务器的标头是:

POST /images HTTP/1.1
Host: mysite.dev
Connection: keep-alive
Content-Length: 1081439
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://mysite.dev
X-CSRF-Token: ynCLWDzF90l3BhmMcmxF+KCFiws3tnQiFAuWp+Buqcw=
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.65 Safari/537.36
X-Requested-With: XMLHttpRequest
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryT5ZwwFlboJY4Cz7n
Referer: http://mysite.dev/images/new
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,ru;q=0.6

我真的不明白我做错了什么,因为我的客户端设置与 Blueimp 演示中指定的设置并没有太大区别:

  url: "/images"
  paramName: "image[image]"
  type: "POST"
  dataType: "json"
  formData: ""
  disableImageResize: false
  acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i

控制器动作的代码是

def create
  @image = Image.create image_params
  respond_with @image, layout: false
end

如果文件较小,一切顺利:

HTTP/1.1 201 Created
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-UA-Compatible: chrome=1
Location: http://mysite.dev/images/298
Content-Type: application/json; charset=utf-8
ETag: "410e24f50d02125716bfc46eb7850c1f"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 40e527d0-e16a-4a4e-a2e5-6124d8e639ff
X-Runtime: 1.533655
Connection: close

客户端发送的header是一样的,所以这里没有区别。我想我的服务器配置可能存在一些问题(不接受大文件),但我找不到它。

谢谢您的帮助!

UPD:找到了原因,实际上是 pow 造成了所有麻烦。一切都与本机服务器运行完美配合。

4

0 回答 0