2011-12-20 11 views
7

मैं रेलवे 3.1 में अपनी फ़ाइल अपलोड के लिए कैरियरवेव का उपयोग कर रहा हूं, और मैं सर्वर स्पेस को सहेजने का एक तरीका ढूंढ रहा हूं। अपलोड की जा रही कई तस्वीरें 20 एमबी से ऊपर हैं, इसलिए उन्हें 1024 x 1024 तक प्रोसेस करने के बाद, मैं मूल को हटाना चाहता हूं। क्या अपलोडर क्लास में ऐसा करने का कोई आसान तरीका है?संस्करणों के संसाधित होने के बाद मैं मूल फ़ाइल को कैरियरवेव कैसे सहेज सकता हूं?

धन्यवाद, --Mark

..
+0

आप के लिए मेरी समाधान काम किया है? – Lichtamberg

उत्तर

3

आप आप में मॉडल और फ़ोटो को हटाने के एक after_save कॉलबैक निर्धारित कर सकते हैं

मैं अपने मॉडल को पता है, लेकिन अगर आप इसे अनुकूलित कुछ इस तरह काम कर सकते हैं न:

class User << ActiveRecord::Base 

    after_create :convert_file 
    after_create :delete_original_file 

    def convert_file 
    # do the things you have to do 
    end 

    def delete_original_file 
    File.delete self.original_file_path if File.exists? self.original_file_path 
    end 
end 
+0

क्या आप कुछ कामकाजी उदाहरण प्रदान कर सकते हैं? –

+0

एक उदाहरण जोड़ा गया – Lichtamberg

+0

क्या यह आपके लिए काम करता है? यदि हां, तो अच्छा होगा अगर आप मेरा जवाब सही पूछते हैं। – Lichtamberg

1
class FileUploader < CarrierWave::Uploader::Base 

    after :store, :delete_original_file 

    def delete_original_file(new_file) 
    File.delete path if version_name.blank? 
    end 

    include CarrierWave::RMagick 

    storage :file 
    . 
    . # other configurations 

end 
22

मैं दो संस्करणों के लिए इस्तेमाल किया और महसूस किया कि मैं मूल

01 की जरूरत नहीं नहीं था

बजाय

version :thumb do 
    process :resize_to_limit => [50, 50] 
    end 

version :normal do 
    process :resize_to_limit => [300,300] 
end 

होने के मैं हटाया: सामान्य और इस

process :resize_to_limit => [300, 300] 

अब मूल आकार मैं जरूरत में सहेजा जाता है जोड़ा गया है और मैं सर्वर

पर एक तिहाई अप्रयुक्त छवि नहीं है
+1

भयानक, मुझे लगता है कि यह किसी भी संस्करण ब्लॉक के बाहर एक प्रक्रिया करने का एक अच्छा समाधान है ताकि आप मूल संस्करण को बिल्कुल भी सहेज न सकें यदि यह वास्तव में बड़ा है। धन्यवाद – FireDragon

+1

मैं यह जोड़ना चाहता हूं कि यदि आप अभी भी अपलोड की गई फ़ाइल के फ़ाइल नाम में 'सामान्य_' 'शामिल करना चाहते हैं, जैसा कि 'संस्करण' ब्लॉक में होता है, तो आप स्पष्ट रूप से मूल अपलोडर को संस्करण अपलोडर का उपयोग कर असाइन कर सकते हैं 'version_names <<: मध्यम'। –

7

हर कोई! चयनित समाधान मेरे लिए काम नहीं करता है। मेरे समाधान:

after :store, :remove_original_file 

    def remove_original_file(p) 
    if self.version_name.nil? 
     self.file.delete if self.file.exists? 
    end 
    end 
+1

धन्यवाद, आप एक कुकी के लायक हैं! –

0

यह एक छोटा सा हैक है, लेकिन प्रदर्शन लाभ

my_uploader.send :store_versions!, open(my_file) 
संबंधित मुद्दे

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