2012-10-28 15 views
5

मैं वाहक लहर, रेल और अमेज़ॅन एस 3 का उपयोग कर रहा हूं। हर बार जब मैं एक छवि बचाने के लिए, छवि S3 में पता चलता है और मैं इस तरह के नाम के साथ प्रबंधन कंसोल में देख सकते हैं:अमेज़ॅन एस 3 और कैरियरवेव बाल्टी में यादृच्छिक छवि नाम डेटाबेस में मेल नहीं खाता

:

https://s3.amazonaws.com/bucket-name/ uploads/images/10/888fdcfdd6f0eeea_1351389576.png

लेकिन मॉडल में, नाम यह है

https://bucket-name.s3.amazonaws.com/ uploads/images/10/b3ca26c2baa3b857_1351389576.png

सबसे पहले, यादृच्छिक नाम अलग क्यों है? मैं तो जैसे अपलोड करने वाले में यह पैदा कर रहा हूँ:

def filename 
    if original_filename 
    "#{SecureRandom::hex(8)}_#{Time.now.to_i}#{File.extname(original_filename).downcase}" 
    end 
end 

मैं जानता हूँ कि यह एक यादृच्छिक स्ट्रिंग हर कॉल प्राप्त नहीं हो रहे हैं क्योंकि मॉडल में गलत यूआरएल सुसंगत और बचाया है। इस प्रक्रिया में कहीं भी छवि नाम सहेजने के बाद मॉडल में सहेजने के लिए जेनरेट किया जाना चाहिए और अमेज़ॅन एस 3 पर भेजा जाना चाहिए। अजीब।

इसके अलावा, क्या मुझे urge regex का उपयोग किये बिना bucket.s3 के बजाय s3/bucket के मामले में एक मैच कर सकता है? क्या कैरियरवेव या उसके लिए कुछ विकल्प है?

उत्तर

2

मैंने फ़ाइल नाम को सहेजकर इसे हल किया अगर यह अभी भी मूल फ़ाइल नाम था। अपलोड करने वाले में, डाल:

def filename 
    if original_filename && original_filename == @filename 
    @filename = "#{any_string}#{File.extname(original_filename).downcase}" 
    else 
    @filename 
    end 
end 

पथ बनाम sumbdomain के मुद्दे वास्तव में कोई मुद्दा नहीं है। यह सबडोमेन के साथ काम करता है। अर्थात। https://s3.amazonaws.com/bucket-name/ और https://bucket-name.s3.amazonaws.com/ दोनों ठीक काम करते हैं।

3

डिफ़ॉल्ट रूप से कैरियरवेव URL को संग्रहीत नहीं करता है। इसके बजाए, यह हर बार आपको इसकी आवश्यकता होती है।

तो, हर बार filename कहा जाता है कि यह Time.now.to_i की वजह से एक अलग मूल्य लौटाएगा।

इसके बजाय created_at कॉलम का उपयोग करें, या यादृच्छिक आईडी या पूर्ण फ़ाइल नाम संग्रहित करने के लिए एक नया कॉलम जोड़ें।

+0

मैं उस टिप की सराहना करता हूं जो इसे सहेजा नहीं गया था। मुझे बस इसे बचाने की जरूरत है – AJcodez

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