2011-06-23 80 views
2

我正在使用Rails和valums file-uploader進行ajax上傳。在開發過程中,所有作品都完美無瑕,然而在linode nginx上的製作卻打破了一切。 錯誤日誌:rails 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$ 

上傳,而不JavaScript的做工精細,使用Rails 3和回形針。數據庫 - PostgreSQL。 我真的低服務器端的東西,並尋找幫助如何解決這個問題。如果您需要更多信息,請發表評論。

回答

3

文件上傳通過webbrick上的StringIO工作,但Rack :: SOMETHING :: SOMETHING除了webrick之外的所有內容。這改變了修正問題:

- file = request.body 
+ file = StringIO.new(request.body.read)