Rails ajax 文件上传和 Nginx 集成的问题
我使用 Rails 和 valums file-uploader 来做 ajax 的文件上传,在开发环境中完全没有任何问题,但是部署到产品环境时,前端是一个 Nginx ,就出现了下面的错误:
[ pid=2097 thr=3065629552 file=ext/nginx/HelperAgent.cpp:584 time=2011-06-23 09:47:06.714 ]: Uncaught exception in PassengerServer client thread: exception: An error occured while sending the request body to the request handler: Broken pipe (32) backtrace:
in 'virtual void Passenger::Session::sendBodyBlock(const char*, unsigned int)' (Session.h:198)
in 'void Client::sendRequestBody(Passenger::SessionPtr&, Passenger::FileDescriptor&, const std::string&, long unsigned int)' (HelperAgent.cpp:295)
in 'void Client::handleRequest(Passenger::FileDescriptor&)' (HelperAgent.cpp:510)
in 'void Client::threadMain()' (HelperAgent.cpp:603)
2011/06/23 09:47:06 [error] 2134#0:
*13 sendfile() failed (32: Broken pipe) while sending request to upstream, client: 94.76.87.38, server:
69.168.213.69, re$
如果不使用 ajax 的话,上传文件完全没问题的。
请问这到底是什么问题呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到了解决办法了,原来在使用 webbrick 时文件上传是通过 StringIO 来处理的,但Rack::xxxx:xxxx 不支持 webbrick ,解决的办法是:
将 file = request.body 改为 file = StringIO.new(request.body.read)