2010-08-09 8 views
5

मैं अपने रेल एप्लिकेशन में एक ज़िप फ़ाइल अपलोड करने में सक्षम होना चाहता हूं जिसमें कई छवियां हैं। फिर मैं चाहता हूं कि रेल उस फ़ाइल को अनजिप करें और छवियों को मेरे फोटो के मॉडल में Paperclip के माध्यम से संलग्न करें, ताकि वे अंततः मेरे अमेज़ॅन एस 3 खाते (पेपरक्लिप के माध्यम से कॉन्फ़िगर) पर संग्रहीत हो जाएं।हेरोकू पर होस्ट किए गए रेल के माध्यम से एस 3 को फ़ाइलों को अपलोड और अनजिप करना?

मैं चाहूँगा मेरे सभी रेल साइट Heroku पर होस्ट, जो दुर्भाग्य से अस्थायी रूप से पेपरक्लिप पार्स से पहले unzipping करने के लिए किसी भी तरह के स्थानीय भंडारण की अनुमति नहीं है (जहां तक ​​मुझे पता है हूँ) पर ऐसा करते हैं।

मैं यह कैसे करूँगा ??

उत्तर

4

मैं सीधे एस 3 पर अपलोड करने की अनुशंसा करता हूं जो हरोकू को पूरी तरह से बाईपास करता है ताकि आप लागू होने वाले 30 सेकंड अनुरोध समय सीमा तक सीमित न हों (जो उस समय के बाद आपके अपलोड को छोड़ देता है) या 1 जीबी /tmp निर्देशिका सीमा। फ़ाइल अपलोड होने के बाद, आप फ़ाइल के नाम और स्थान के साथ अपने रेल ऐप में एक पोस्ट कर सकते हैं और फिर अपना अनजिपिंग ऑपरेशन कर सकते हैं। यदि आप पोस्ट-प्रोसेसिंग के लिए पेपरक्लिप का उपयोग करना चाहते हैं, तो मैंने नीचे एक लिंक संलग्न किया है। यदि आप सीधे एस 3 पर अपलोड करने के मार्ग पर जाते हैं जो आपके रेल सर्वर से काम को ऑफ़लोड करता है, तो कृपया मेरी नमूना परियोजनाएं देखें:

रेल 3, फ्लैश और म्यूटूल-आधारित FancyUploader का उपयोग करके नमूना प्रोजेक्ट सीधे S3 पर अपलोड करने के लिए: https://github.com/iwasrobbed/Rails3-S3-Uploader-FancyUploader

नमूना परियोजना रेल 3 का उपयोग, फ्लैश/Silverlight/GoogleGears/BrowserPlus और jQuery आधारित plupload S3 के लिए सीधे अपलोड करने के लिए: https://github.com/iwasrobbed/Rails3-S3-Uploader-Plupload

यहां छवियों की तरह एक उदाहरण के लिए पेपरक्लिप पोस्ट प्रोसेसिंग के लिए लिंक है:

http://www.railstoolkit.com/posts/fancyupload-amazon-s3-uploader-with-paperclip

1

हेरोकू #{RAILS_ROOT}/tmp पर लेखन की अनुमति देता है।

लेकिन आपको यह ध्यान रखना होगा कि अनुरोध तब तक होगा जब तक अनुरोध जारी रहेगा। शायद लंबा, लेकिन इसकी गारंटी नहीं है। जब आप अनजिप करते हैं और S3 को भेजते हैं तो आप अनुरोध को अवरुद्ध करने का प्रयास कर सकते हैं, लेकिन आपको उस समय का ख्याल रखना चाहिए।

यह मुझे लगता है कि आपको कुछ फ़्लैश अपलोडर की आवश्यकता है जो बिना हेरोजोक के अनजिप और एस 3 को भेज सकता है।

+0

लेकिन क्या मैं अभी भी अपने पेपरक्लिप एसोसिएशन को अपने रेल ऐप में बनाने में सक्षम हूं यदि मैंने एक फ्लैश अपलोडर का उपयोग किया जो हरोकू को छोड़ देता है? बिट यहाँ उलझन में है। – neezer

+0

पेपरक्लिप का उपयोग करने के लिए अपने डीबी माइग्रेट करने के बाद मौजूदा फ़ाइलों से निपटने के बारे में यहां कुछ है।आप सचमुच बस अपना मॉडल सेट कर सकते हैं। वहां सूचीबद्ध फाइल के रूप में। आप जो भी करने की कोशिश कर रहे हैं उसमें आपकी मदद कर सकते हैं: http://thewebfellas.com/blog/2008/11/2/goodbye-attachment_fu-hello-paperclip –

2

dmagkic rails_root/tmp के बारे में सही है। एस 3 को Heroku के माध्यम से

  • फ़ाइलें अपलोड करें
  • सेटअप फ़ाइलें
  • बी.जे. चलाने (फ़ाइल नाम है कि आप समूह की जरूरत की दुकान), जो डाउनलोड ज़िप करने के लिए एक पृष्ठभूमि काम: मैं निम्नलिखित की तरह कुछ की सिफारिश एस 3 से फ़ाइलें, उन्हें ज़िप, एस 3 को ज़िप भेजता है, unzipped फ़ाइलों को हटा देता है।

इस तरह आपका आवेदन अपलोड प्रक्रिया के दौरान अभी भी उत्तरदायी होगा।

यदि आप एकाधिक फ़ाइलों को अपलोड करने का प्रयास करते हैं, तो आप/tmp लिख सकते हैं, लेकिन केवल यह सुनिश्चित कर लें कि सभी फाइलें उसी पोस्ट अनुरोध में आती हैं।

+0

आपके पास चीजें उलटी हुई हैं: मैं * एक ज़िप फ़ाइल अपलोड करना चाहता हूं * और रेल * अनजिप फाइलें स्टोर * है। मैं अभी भी अस्पष्ट हूं कि मुझे '# {RAILS_ROOT}/tmp' में फ़ाइलों के साथ कितनी देर तक काम करना है, हालांकि: क्या वे तब तक जारी रहते हैं जब तक कि अगला अनुरोध नहीं आता है या वे उससे जल्द समाप्त हो जाते हैं? और क्या अनुरोध एक ही कार्रवाई या आवेदन के लिए कोई अनुरोध के लिए होना चाहिए? – neezer

+0

ठीक है, बस थोड़ा सा चीजें बदलें। पेपरक्लिप का उपयोग करके एस 3 पर ज़िप अपलोड करें और फ़ाइलों को अनजिप और संसाधित करने के लिए पृष्ठभूमि कार्य करें। एक अनुरोध 1 HTTP कार्रवाई है, आपके पास उससे अधिक समय/tmp में समय नहीं है। –

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