Bitte schlagen Sie mir eine Möglichkeit vor, ein Bild von einer URL per Büroklammer zu speichern.
ruby-on-rails
ruby
upload
paperclip
Khanh
quelle
quelle
update_attributes
Umbenennungspicture_from_url
umpicture_url=(value)
zum Beispiel.user.picture_from_url('/etc/password')
. In den meisten Situationen ist es wahrscheinlich in Ordnung.open(url)
ist der Dateiname nicht korrekt, z . B.open-uri20150106-10034-lpd5fm.
anstelle vonef3a601e_ef3d008b_ef3d0f7e.jpg
.In Paperclip 3.1.4 ist es noch einfacher geworden.
Dies ist etwas besser als offen (url). Denn mit open (url) erhalten Sie "stringio.txt" als Dateinamen. Mit dem oben genannten erhalten Sie einen richtigen Namen der Datei basierend auf der URL. dh
quelle
application/octet_stream
alscontent_type
.Es hat bei mir nicht funktioniert, bis ich "open" für die analysierte URI verwendet habe. Sobald ich "open" hinzugefügt habe, hat es funktioniert!
Meine Büroklammerversion ist 4.2.1
Vor dem Öffnen wurde der Inhaltstyp nicht richtig erkannt, da es sich nicht um eine Datei handelte. Es würde image_content_type sagen: "binary / octet-stream", und selbst wenn ich es mit dem richtigen Inhaltstyp überschreibe, würde es nicht funktionieren.
quelle
Laden Sie zuerst das Bild mit dem
curb
Edelstein auf a herunterTempFile
und weisen Sie dann einfach das tempfile-Objekt zu und speichern Sie Ihr Modell.quelle
Es kann für Sie hilfreich sein. Hier ist der Code mit Büroklammer und Bild in der Remote-URL.
Im Modell
quelle
Da dies alte Antworten sind, ist hier eine neuere:
Fügen Sie Ihrem gewünschten Controller in der Datenbank eine Image-Remote-URL hinzu
Bearbeiten Sie Ihr Modell
* In Rails4 müssen Sie attr_accessible im Controller hinzufügen.
Aktualisieren Sie Ihr Formular, wenn Sie anderen erlauben, ein Bild von einer URL hochzuladen
quelle
super
?super
wird verwendet, um die ursprüngliche Methode aufzurufen. Die Suche nach dem Methodenkörper beginnt in der Superklasse des Objekts, das die ursprüngliche Methode enthältDies ist eine Hardcore-Methode:
wo Uuid.uuid nur eine zufällige ID macht.
quelle
In die offizielle Dokumentation wird hier https://github.com/thoughtbot/paperclip/wiki/Attachment-downloaded-from-a-URL berichtet
Auf jeden Fall scheint es nicht aktualisiert zu sein, da sich in der letzten Version der Büroklammer etwas geändert hat und diese Codezeile nicht mehr gültig ist:
Es wird ein Fehler ausgelöst, insbesondere wird dieser Fehler ausgelöst:
Die neue korrekte Syntax lautet:
Außerdem müssen wir diese Zeilen in die Datei config / initializers / paperclip.rb einfügen :
Getestet mit Büroklammer Version
5.3.0
und es funktioniert.quelle