2011-09-07 17 views
10

मैं फ़ाइल अपलोड को संभालने के लिए थॉटबॉट के Paperclip gem का उपयोग कर रहा हूं।क्या पेपरक्लिप स्वचालित रूप से फ़ाइल नाम साफ़ करता है?

मैं खोजने जब मैं फ़ाइल नाम में रिक्त स्थान के साथ एक फ़ाइल अपलोड करें, यह अंडरस्कोर से बदला रिक्त स्थान के साथ संग्रहीत हो जाता है कि।

यह अच्छा है।

मैं भी ~ और इतने पर जैसे विशेष वर्ण के साथ एक फ़ाइल को अपलोड करने की कोशिश की और वे सभी को अंडरस्कोर से बदला गया।

ग्रेट। वास्तव में मैं क्या चाहता हूँ।

लेकिन यह क्यों हो रहा है?

सभी मैं अपने मॉडल है में कर रहा हूँ ...

has_attached_file(
    file_somefile, 
    :path => ":rails_root/public/system/other/path/elements/:basename.:extension" 
) 

इस पेपरक्लिप का डिफ़ॉल्ट व्यवहार है?

+0

क्या ओएस? ओएस एक्स पर मुझे फ़ाइल नाम w/मूल रिक्त स्थान और tildes मिलता है। –

+0

मैं ओएस एक्स, पेपरक्लिप 2.3.1.1 – Ethan

+0

हम्म का उपयोग कर रहा हूं। मैं उस ऐप में पथ को स्पष्ट रूप से सेट नहीं करता जिसकी मैंने जांच की है, इसके अलावा, मैं कुछ भी नहीं कर रहा हूं। फिलहाल मेरा संस्करण नहीं देख सकता, लेकिन मैंने Gemfile में संस्करण निर्दिष्ट नहीं किया है, इसलिए शायद 2.4.1ish। –

उत्तर

6

ठीक है, थोड़ी अधिक खोज के बाद, मुझे this blog post मिला जो कहता है, नीचे पेपरक्लिप वास्तव में फ़ाइल नामों की कुछ न्यूनतम प्रसंस्करण करता है।

11

थोड़ी और जानकारी जोड़ने के लिए, इस Paperclip::Attachment#cleanup_filename में क्या होता है, जिसमें डिफ़ॉल्ट restricted_characters/[& $ +, /:;? = @ <> [] {} \ | \\^~% #]/बदल दिया जाता है अंडरस्कोर के साथ।

यह दर्ज नहीं किया है, लेकिन आपके द्वारा निर्दिष्ट कर सकते हैं: restricted_characters बदलने के लिए क्या बदल दिया जाता है paperclip करने का विकल्प है, उदा

class User < ActiveRecord::Base 
    attr_accessible :avatar 
    has_attached_file :avatar, :restricted_characters => /@/ # only replaces '@' 
end 
+0

[पेपरक्लिप :: अटैचमेंट # क्लीनअप_फिलनाम] के लिंक अपडेट करें (https://github.com/thoughtbot/paperclip/blob/master/lib/paperclip/attachment.rb#L605) – nnattawat

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