Ich habe eine URL zu einem Bild, das ich lokal speichern möchte, damit ich mit Paperclip ein Miniaturbild für meine Anwendung erstellen kann. Wie kann ich das Bild am besten herunterladen und speichern? (Ich habe mich mit der Handhabung von Ruby-Dateien befasst, bin aber auf nichts gestoßen.)
ruby-on-rails
ruby
file-handling
Alok Swain
quelle
quelle
IO.copy_stream(open('http://example.com/image.png'), 'destination.png')
require 'open-uri'
, nur den Code darunter verwendetEine noch kürzere Version:
So behalten Sie den gleichen Dateinamen bei:
quelle
Wenn Sie PaperClip verwenden, wird das Herunterladen von einer URL jetzt automatisch durchgeführt.
Angenommen, Sie haben so etwas wie:
Geben Sie in Ihrem Modell einfach das Bild als URL an, etwa wie folgt (absichtlich absichtlich geschrieben):
Sie möchten dies wahrscheinlich in eine Methode in Ihrem Modell einfügen. Dies funktioniert auch auf dem temporären Dateisystem von Heroku einwandfrei.
Büroklammer wird es von dort nehmen.
Quelle: Büroklammerdokumentation
quelle
Ich denke, das ist der klarste Weg:
quelle
Überprüfen Sie Net :: HTTP in der Standardbibliothek. Die Dokumentation enthält mehrere Beispiele zum Herunterladen von Dokumenten über HTTP.
quelle
Kernel#open
nicht nur den Dateizugriff ermöglicht, sondern auch den Aufruf durch Präfixieren eines Pipe-Symbols (zopen("| ls")
. B. ) verarbeitet. Daher kann es zu einem ernsthaften Sicherheitsrisiko kommen, wenn variable Eingaben für das Argument von verwendet werdenKernel#open
.