2012-07-25 15 views
12

मुझे लगता है कि फ़ाइल अपलोड/डाउनलोड करने की आवश्यकता है एक रूबी ऑन रेल्स अनुप्रयोग विकसित कर रहा हूँ प्राप्त करने के लिए। अपलोड भाग के लिए मैंने मणि वाहक का उपयोग किया क्योंकि यह उपयोग और लचीला उपयोग करना बहुत आसान है। समस्या है: एक बार मैं फ़ाइल अपलोड की गई, मैं कुछ चीजें जानने की जरूरत: अर्थात, अगर यह फ़ाइल मैं इसे इनलाइन दिखाने को डाउनलोड करने की एक PDF है बजाय, और एक ही एक छवि के लिए चला जाता है। मैं कैसे फाइल एक्सटेंशन मिलता है और कैसे मैं इसे लिए कर सकते हैं एक उपयोगकर्ता के लिए फ़ाइल भेजने ?? किसी भी प्रतिक्रिया की सराहना की है धन्यवाद !!Carrierwave कैसे फाइल एक्सटेंशन

उत्तर

30

फाइल एक्सटेंशन का निर्धारण (मुझे लगता है घुड़सवार अपलोड करने वाले के लिए एक नाम 'फ़ाइल' है):

file = my_model.file.url 
extension = my_model.file.file.extension.downcase 

तो माइम और स्वभाव तैयार वार्स:

disposition = 'attachment' 
mime = MIME::Types.type_for(file).first.content_type 

if %w{jpg png jpg gif bmp}.include?(extension) or extension == "pdf" 
    disposition = 'inline' 
end 

(अगर आप चाहते हैं अन्य एक्सटेंशन जोड़) ।

और फिर फ़ाइल को भेजने:

send_file file, :type => mime, :disposition => disposition 
+0

आपको बहुत बहुत धन्यवाद, मैं अपने समाधान की शैली पसंद है, और यह पूरी तरह से काम किया। फिर, उत्तर के लिए धन्यवाद !! – Wiggin

+0

जहां वास्तव में रेल परियोजना फाइलों में आप स्वभाव और MIME प्रकार वार्स जगह? – maumercado

2

आप किसी फ़ाइल को अपलोड करने के बाद, नाम डेटाबेस में संग्रहित है। इसमें एक्सटेंशन भी शामिल है।

user.asset.file.extension 

यह उपयोगकर्ता के लिए भेजने के लिए, यदि आप user.asset_url कहते हैं, यह आप URL दे देंगे जहां फ़ाइल है: मान लें कि आप एक अपलोडर asset के रूप में माउंट के साथ एक User मॉडल है, तो आप इसे के रूप में प्राप्त कर सकते हैं अपलोड की गई। उपयोगकर्ता फ़ाइल प्राप्त करने के लिए उस लिंक का उपयोग कर सकते हैं। या क्या मैं गलत हूं कि "उपयोगकर्ता को फ़ाइल भेजना" से आपका क्या मतलब है?

+0

जवाब देने के लिए धन्यवाद !! अच्छा, मैं उपयोगकर्ता को फ़ाइल डाउनलोड करना चाहता हूं। आप जानते हैं, डोनलोड लोड करें (इसके साथ खोलें या इसे रखें या क्रोम केस में रखें या अस्वीकार करें।) मैंने सोचा कि पैरामीटर के साथ एक साधारण send_file के साथ ठीक रहेगा। – Wiggin

+0

ठीक है, बस फ़ाइल से लिंक करें। आप 'user.asset_url' के साथ यूआरएल प्राप्त कर सकते हैं। –

+0

हाँ, मैंने यह किया! आपकी सलाह पूरी तरह से काम किया, बहुत बहुत धन्यवाद !! – Wiggin

संबंधित मुद्दे