2010-02-17 3 views
8

Büroklammer standardmäßig versuchen, jede Bilddatei zu verarbeiten, um ein Vorschaubild zu erzeugen. Aber es wird auch versucht, es mit PDF-Dateien zu tun, was eine sehr zeitraubende Aufgabe sein kann. Ich habe versucht, auf Google zu suchen und eine Lösung gefunden, aber es ändert Paperclip Methoden.Wie kann die Nachbearbeitung von PDF-Dateien in Paperclip deaktiviert werden?

Wie kann ich die PDF-Nachbearbeitung in Paperclip deaktivieren, ohne die Büroklammerquellen zu wechseln?

Antwort

16

Aus meiner aktuellen Produktion App, ähnlich wie oben, sieht aber ausdrücklich für Bilder (in diesem Fall meine Uploader ziemlich akzeptiert jede Art von Datei, so dass ich nur bearbeiten, Bilder und ignorieren alle anderen):

before_post_process :is_image? 

def is_image? 
    ["image/jpeg", "image/pjpeg", "image/png", "image/x-png", "image/gif"].include?(self.asset_content_type) 
end 
+0

Hi Toby, wo stellst du diesen Code? Vielen Dank. – sscirrus

+0

In dem Modell, Iirc –

2

Eine Lösung ist before_post_process Rückruf zu verwenden:

# Model with has_attached_file 
before_post_process :forbid_pdf # should be placed after line with has_attached_file 

private 
def forbid_pdf 
    return false if (data_content_type =~ /application\/.*pdf/) 
end 

data_content_type sollte in Ihrem Modell entsprechendes Feld geändert werden.

Eine andere Lösung, die ich entwickelt habe, ist benutzerdefinierte Prozessor für Bilder zu erstellen, in denen wir den Dateityp überprüfen sollten, und wenn es nicht pdf ist, führen Sie Standardprozessor Paperclip::Thumbnail.

0

Sie können es mit einer einzigen Zeile lösen:

before_post_process { avatar_content_type.match? %r{\Aimage\/.*\z} } 

vergessen Sie nicht avatar mit Ihrem Attribute (zB .: receipt_content_type) zu ersetzen.

Verwandte Themen