2012-01-11 27 views
7

के साथ एस 3 से एक फ़ाइल प्रॉक्सी करें, मुझे उसके प्रोटोकॉल एप्लिकेशन के माध्यम से एस 3 में संग्रहीत फ़ाइल भेजने की आवश्यकता है। मैं S3 पर फ़ाइल के यूआरएल पर एक रीडायरेक्ट का उपयोग नहीं कर सकता क्योंकि मैं एक साइटमैप भेजना चाहता हूं जिसे उसी डोमेन से लिंक के रूप में सेवा दी जानी चाहिए।प्रॉक्सी को हेडोकू और रेल

आदर्श रूप में, मैं रेल ऐप द्वारा फ़ाइल भेजने के लिए कुछ प्रकार की प्रॉक्सी विधि का उपयोग करता हूं, कम से कम, मैं फ़ाइल को उसके अनुकरण की टीएमपी निर्देशिका में डाउनलोड कर सकता हूं और इसे बाद में भेज सकता हूं।

मैं फ़ाइल के लिए सही सामग्री-प्रकार भी भेजूंगा।

क्या आप जानते हैं कि मैं इसे कैसे प्राप्त कर सकता हूं? सबसे अच्छा तरीका क्या होगा?

वहाँ जो कि कर रही है एक रैक अनुप्रयोग है लेकिन मुझे यकीन है कि कैसे रेल में यह पुन: पेश करने, कोड को देखने के here

आपकी मदद के लिए धन्यवाद नहीं कर रहा हूँ

+0

"फ़ाइल भेजें" से आपका क्या मतलब है? आप इसे किसके पास भेज रहे हैं? क्या आप उपयोगकर्ता को इसे डाउनलोड करने दे रहे हैं या आप अपने हेरोकू ऐप के माध्यम से इसे डाउनलोड करने के लिए किसी अन्य सेवा के लिए प्रॉक्सी के रूप में कार्य कर रहे हैं? – iwasrobbed

+1

मैं अपने हेरोकू ऐप के माध्यम से इसे डाउनलोड करने के लिए किसी अन्य सेवा (एस 3) के लिए प्रॉक्सी के रूप में कार्य करना चाहता हूं। –

+0

हेरोकू में 30 सेकंड का अनुरोध टाइमआउट है इसलिए मुझे यकीन नहीं है कि आप एक हेरोोक सर्वर को प्रॉक्सी के रूप में विश्वसनीय रूप से उपयोग कर सकते हैं। – iwasrobbed

उत्तर

3

यह इस तरह दिखता है:

blob = AWS::S3::S3Object.value(filename, bucketname) 
send_data(blob, 
      { :type => 'image/jpg, 
      :disposition => 'inline' }) 

प्रकार छवि/jpg, छवि/gif, आदि हो सकता है

+0

को स्थानांतरित करने के लिए 30 सेकंड से कम समय लेते हैं। यह एक संभावना है लेकिन यदि संभव हो तो मैं कुछ प्रकार की स्ट्रीमिंग ढूंढना पसंद करूंगा। साथ ही, अगर फ़ाइल एस 3 पर संग्रहीत है, तो यह एक सार्वजनिक यूआरएल पर है इसलिए मुझे फ़ाइल प्राप्त करने के लिए एस 3 लाइब्रेरी का उपयोग करने की आवश्यकता नहीं है, सुनिश्चित नहीं है कि फ़ाइल को S3 lib या सीधे से प्राप्त करने का कोई कारण है या नहीं यूआरएल द्वारा? –

+0

अच्छी तरह से, यदि आप s3 url पर रीडायरेक्ट नहीं करना चाहते हैं, तो रेल ऐप को सीधे छवि की सेवा करनी होगी। आप रेंडर का उपयोग करके इसे स्ट्रीम करने में सक्षम हो सकते हैं: text => proc {} निर्माण करें, लेकिन यदि आपको कैश शामिल है (वार्निश या मेमकैच) इसे सिर्फ एस 3 से खींचकर इसे भेजना उचित समाधान है। – elijah

+0

मुझे यकीन नहीं है कि फ़ाइल को स्ट्रीम करने के लिए 'रेंडर: टेक्स्ट => proc {} 'का उपयोग कैसे करें। इसके अलावा मैं S3 पर फ़ाइल से गतिशील रूप से सामग्री/प्रकार सेट करना चाहता हूं। क्या आपके पास इसके साथ कुछ विचार है? आपकी मदद के लिए धन्यवाद। –