मुझे send_file (Model.attachment.path) को काम करने के लिए नहीं मिल सकता है। यह विफल नहीं होता है, इसके बजाय, यह क्लाइंट को 0 बाइट आकार फ़ाइल भेजता है, फ़ाइल नाम सही हैं।रेल भेजकर 0 बाइट फाइल भेजता है send_file
यह समस्या हो रहा शुरू कर दिया बाद मैं 3.
अन्य चीजें हैं जो इस प्रवास में जगह ले ली है और मैं विस्तार पर उन सभी को मेरी पूरी कोशिश करेंगे की एक बहुत कुछ कर रहे थे करने के लिए रेल 2.3.8 से एक बड़ा पलायन किया था ।
- विघटन परिवर्तन/सर्वर परिवर्तन। रैकस्पेस RHEL5 linode को उबंटू 10.04LTS
- रूबी संस्करण परिवर्तन, 1.8.6 -> 1.9.2
- रेल संस्करण परिवर्तन, 2.3.8 -> 3.0.0
- httpd मंच परिवर्तन, apache2 -> nginx (हालांकि मैंने apache2 पर भी कोशिश की और यह काम नहीं किया)।
मैं FTP के माध्यम से संलग्नक ले जाया गया, के रूप में वे मेरे Git संग्रह का हिस्सा है ताकि वे टोपी तैनाती के माध्यम से प्रकाशित किए गए थे नहीं थे बजाय मैन्युअल एफ़टीपी दूरस्थ (RHEL5) दूरस्थ करने के लिए स्थानीय (Win7) तो स्थानीय (Win7) से (Ubuntu10)।
मुझे पता है कि एफ़टीपी स्थानांतरण स्थानान्तरण के माध्यम से फ़ाइल अनुमतियों को बरकरार नहीं रखता है, इसलिए मैंने जो भी किया है, वह मेरे पिछले सर्वरों पर देखे गए chmods की नकल करता है, इसलिए वे लगभग समान हैं। (उपयोगकर्ता/समूह अलग हैं, रूट पर सेट करें: olduser के बजाय रूट: olduser)।
मेरे उत्पादन लॉग से अनुलग्नक डाउनलोड करने के अनुरोध का एक स्निपेट।
Started GET "/attachments/replies/1410?1277105698" for 218.102.140.205 at 2010-09-16 09:44:31 +0000
Processing by AttachmentsController#replies as HTML
Parameters: {"1277105698"=>nil, "id"=>"1410"}
Sent file /srv/app/releases/20100916094249/attachments/replies/UE0003-Requisition_For_Compensation_Leave.doc (0.2ms)
Completed 200 OK in 78ms
सब कुछ ठीक है। मुझे स्थानीय मुद्दों को भी रद्द करने दें, मैंने Win7 और Ubuntu (Vbox पर) दोनों पर क्रोम के माध्यम से डाउनलोड करने का प्रयास किया है।
मुझे यह भी आश्वस्त करने दें कि पथ वास्तव में सही है।
[email protected]:/srv/app/current# tail /srv/app/releases/20100916094249/attachments/replies/UE0003-Requisition_For_Compensation_Leave.doc
#
#
%17nw
HQ��+1ae����
%33333333333(��QR���HX�"%%��@9
��@�p4��#[email protected]��Unknown������������G��z �Times New Roman5��Symbol3&�
�z �Arial5&�
तो सवाल, मैं कैसे send_file वास्तव में नकली 0 बाइट कबाड़ के बजाय फ़ाइलें भेजने के लिए मिलता है योग करने के लिए। पथ के साथ एक्स Sendfile हेडर के साथ खाली प्रतिक्रिया लौटाएँ, अपाचे (mod_xsendfile के साथ) या lighttpd -
के रूप में यात्री 5 पर बहुत अच्छा काम करता है, मैंने वास्तव में कल समाधान का पता लगाया और आज इसके बारे में ब्लॉग किया http://www.novafist.com/2010/09/send_file-sends-0- बाइट्स-टू-क्लाइंट-इन-रेल/ – fivetwentysix
config.action_dispatch.x_sendfile_header = 'एक्स-एक्सेल-रीडायरेक्ट' हेड() से भी बेहतर है। – gertas
उत्तर के लिए धन्यवाद, मुझे कुछ समय बचाया! –