पर सहेजे बिना मैं उपयोगकर्ता द्वारा अपलोड की गई एक XML फ़ाइल (100kb से कम) को पढ़ने में सक्षम होना चाहता हूं, लेकिन पहले उस फ़ाइल को डेटाबेस में सहेजना नहीं है । मुझे वर्तमान कार्रवाई से पहले उस फ़ाइल की आवश्यकता नहीं है (इसकी सामग्री को पार्स किया गया है और डेटाबेस में जोड़ा गया है, हालांकि, फ़ाइल को पार्स करना समस्या नहीं है)। के बाद से स्थानीय फ़ाइलों के साथ पढ़ा जा सकता है:उपयोगकर्ता अपलोड की गई फ़ाइल को कैसे पढ़ा जाए, इसे डेटाबेस
File.read("export.opml")
मैं बस के लिए एक file_field बनाने के बारे में सोचा: uploaded_file, तो
File.read(params[:uploaded_file])
साथ इसे पढ़ने के लिए कोशिश कर रहा है, लेकिन वह सब करता है एक लेखन त्रुटि फेंक है (कर सकते हैं ' स्ट्रिंग में हैशविथ इंडिफिफर एक्सेस में कनवर्ट करें)। मैंने वास्तव में कई सारी चीजों की कोशिश की है (साथ ही/tmp निर्देशिका से पढ़ने सहित), लेकिन उनमें से कोई भी काम करने के लिए नहीं मिल सकता है।
मुझे आशा है कि मेरे प्रश्न की दुर्बलता मैंने अपने आप को हल करने का प्रयास करने के लिए किए गए प्रयासों को मुखौटा नहीं किया है, लेकिन मैं इस प्रश्न को इस तरीके से प्रदूषित नहीं करना चाहता था कि इसे कैसे प्राप्त नहीं किया जाए किया हुआ। । किसी को जो में झंकार के लिए बिग धन्यवाद
यहाँ मेरे विचार है:
<% form_for(:uploaded_file, @feed, :url => {:action=>'parse'}, :html=> {:multipart=>true}) do |f| %> <p>
<%= f.label :uploaded_file, 'Upload your file.' %><br />
<%= f.file_field :uploaded_file %>
</p>
<p><%= f.submit 'upload' %></p>
<% end %>
मैं एक कस्टम क्रिया (अपलोड) जो file_field अपलोड है, जो जमा करने के बाद, एक और कस्टम क्रिया के लिए रवाना पारित हो जाता है संभालती की स्थापना (पार्स) प्रसंस्करण के लिए। क्या यह मेरी समस्या का हिस्सा हो सकता है?
हाय Vlad में! आपकी प्रतिक्रिया के लिए धन्यवाद। मुझे बिल्कुल यकीन नहीं था कि आपके कोड का उपयोग कैसे करें। जब मैं पार्स करता हूं, तो क्या मैं किसी भी तरह file_data या xml_contents को कॉल करता हूं। जैसे मैं बस xml = फ़ाइल सेट कर रहा था।पढ़ें (पैराम्स [: अपफाइल]) तो मैं पार्स (एक्सएमएल) तो, मुझे यकीन नहीं था, लेकिन वहां रुकने के लिए कोई नहीं, मैंने कुछ अलग-अलग चीजों की कोशिश की। मैंने वेब्रिक और थिन दोनों का उपयोग करके यह देखने के लिए प्रयास किया कि क्या परिणाम समान थे ... वे थे। File.read (पैराम्स [: अपफाइल]) का उपयोग करते समय, मुझे "HashWithIndifferentAccess स्ट्रिंग में कनवर्ट नहीं किया जा सकता" क्या यह हो सकता है कि अपफ़ाइल कैसे शुरू हो जाए? "upload_file" => {"upload_file" => # <फ़ाइल: सी:/उपयोग करें ... – GoodGets
जब मैं पथ xml = file.read (पैराम्स [: अपफाइल] .path का उपयोग करने का प्रयास करता हूं) मुझे एक अपरिभाषित विधि 'पथ' क्या मेरे "दृश्य" में कुछ गड़बड़ हो सकती है? मैंने इसे शामिल करने के लिए ऊपर अपना प्रश्न संपादित कर लिया है। – GoodGets
मैं अपने दृश्य के साथ खेल रहा हूं। अब मैं उपयोग कर रहा हूं: <% form_for: feed,: url => {: नियंत्रक => 'फ़ीड्स',: action => 'parse'} do | f | %> और जब मैं अब अपलोड की गई फ़ाइल जमा करता हूं, तो मुझे एक टाइप एरर मिलता है "नील को स्ट्रिंग में परिवर्तित नहीं कर सकता" तो, मुझे लगता है कि कुछ सही तरीके से पारित नहीं हो रहा है। – GoodGets