我一直在努力解决将大图像上传到服务器的这个奇怪问题。我在客户端上使用blueimp file image上传,服务器是带有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,服务器正在执行一个简单的“已完成201创建于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
从客户端发送的标题是相同的,所以这里没有区别。我想我的服务器配置可能会出现一些问题(不接受大文件),但我找不到它。
感谢您的帮助!
UPD:找到原因,实际上是pow导致了所有麻烦。一切都与本机服务器运行完美配合。