Dateien direkt auf S3 hochladen mit Paperclip und Dropzone.js

Es sind meist die kleinen, zeitraubenden Aufgaben, die uns am meisten frustrieren. Wie z.B. das Hochladen einer Datei auf S3; die Anforderung ist ziemlich einfach, aber die gewählte Methode zum Hochladen der Datei wird über die Effizienz der Aufgabe entscheiden. Da das Hochladen von Dateien eine Funktion ist, die die meisten Anwendungen benötigen, hat RailsCarma ein kurzes Tutorial über eine der besten Methoden zusammengestellt, um diese Aufgabe effizient zu erledigen: mit Paperclip und Dropzone.js.

  • Büroklammer ist eine beliebte Wahl für das Hochladen von Bildern und Dateien, da es großartige Funktionen für die Handhabung von Anhängen bietet; "Paperclip" ist die erste Wahl. Mit Paperclip können Sie mehrere Bilder und Dateien hochladen, Miniaturansichten erstellen und sogar die Größe der Bilder automatisch anpassen. Es rühmt sich einer großen und aktiven Community, was es zur ersten Wahl der meisten Entwickler macht.
  • Dropzone.js ist eine Open-Source-Bibliothek mit Funktionen zum Ziehen und Ablegen von Dateien (mit Bildvorschau).
  • Amazon S3 ist ein einfaches Speichergerät für die Datenspeicherung. Wir können es verwenden, um Bilder und alle Arten von Dateien abzurufen.

Warum Paperclip?

Paperclip ist aus den folgenden Gründen ein beliebtes Tool zum Hochladen von Dateien:

  • Unterstützt File Caching:
    Wenn ein Formular nicht validiert werden kann, möchten wir nicht, dass der Benutzer seine Datei erneut auswählen und hochladen muss. Daher ist die Zwischenspeicherung von Dateien aus Sicht der Benutzerfreundlichkeit notwendig. Außerdem wird dadurch die Bandbreite geschont.
  • Verarbeitet Bilder
    Paperclip ist in der Lage, die Größe von Bildern zu ändern und sie auf verschiedene Formate zuzuschneiden, so dass der Entwickler die Bibliothek auswählen kann.
  • Vereinfacht die Aufgabe!
    Paperclip gem verschmutzt Ihren Code nicht und ist einfach zu testen!
  • Ermöglicht Dateiverarbeitung
    Paperclip ermöglicht die Dateiverarbeitung für die Extraktion von EXIF-Daten und die Erstellung von Miniaturansichten von hochgeladenen PDFs, PSDs, DOCs und XLSXs.
  • Bietet Unterstützung für CDN- und Speicherdienste 
    Dies ist ein großer Vorteil, da wir die Bandbreite zu unseren Servern so gering wie möglich halten und mögliche Datenverluste aufgrund von Serverausfällen vermeiden wollen.
  • Bietet On-The-Fly-Verarbeitung
    Paperclip verarbeitet Bilder und Dateien auf Basis der einzelnen Anfragen. Dies ist eine innovative Funktion, die es Entwicklern ermöglicht, benutzerdefinierte Inhalte zu erstellen, die sich am besten an verschiedene Situationen anpassen lassen.

Was sind die asynchronen Ereignisse der Dropzone?

  • hinzugefügte Datei:  Wenn eine Datei zur Liste hinzugefügt wird.
  • Datei entfernt: Wird verwendet, wenn eine Datei aus der Liste entfernt wird. Sie können dies abhören und die Datei von Ihrem Server löschen, wenn Sie dies möchten.
  • Vorschaubild: Wenn das Miniaturbild erstellt wurde. Sie erhält die Daten-URL als zweiten Parameter.
  • Fehler: Bei einem aufgetretenen Fehler wird die Fehlermeldung als zweiter Parameter empfangen. Und wenn der Fehler durch xmlhttprequest verursacht wurde, wird das xhr-Objekt als dritter Parameter empfangen.
  • Verarbeitung: Wenn eine Datei verarbeitet wird (da es eine Warteschlange gibt, werden nicht alle Dateien sofort verarbeitet). Dieses Ereignis wurde früher processingfile genannt.
  • Tropfen: Der Benutzer hat etwas auf die Abwurfzone fallen lassen.

Wie können wir Paperclip in unserer Anwendung konfigurieren?

  • has_attached _file: asset
  • :storage => :s3
  • :S3_host_name => ENV["S3_HOST_NAME"]
  • :S3_region => ENV["S3_REGION"]
  • :S3_protocol => ENV["S3_PROTOCOL"]
  • :path => ":account_id/:class/:source_id/:attachment/:file_name",:s3_headers => {'ContentDisposition' => 'attachment', 'content-type' =>'application/octet_stream'},
    :bucket => ENV["S3_BUCKET"],
    :s3_credentials => Proc.new{|a| a.instance.s3_credentials}
  • Do_not_validate_attachment_file_type :asset
  • def s3_credentials
    {:access_key_id => ENV["S3_ACCESS_KEY_ID"], :secret_access_key => ENV["S3_SECRET_ACCESS_KEY"]}

Ende

Wie können wir mit benutzerdefinierten Pfaden in unserer Anwendung umgehen?

Paperclip.interpolates :attachment do |attachment, style|Image_extension = ["jpg", "jpeg", "gif", "png", "PNG", "GIF", "JPEG", "JPG"]
extname = File.extname(attachment.instance.asset_file_name).downcase.gsub(/\./, '')
if img_extension.include? (extname)
return "Bilder"
sonst
extname zurückgeben
end
end
Paperclip.interpolates :file_name do |attachment, style|file_name = attachment.instance.asset_file_name
Ende

Die Daten im S3-Bucket können bei Bedarf abgerufen werden. Es gibt jedoch eine Einschränkung: Die Handhabung von benutzerdefinierten Pfaden für unterschiedliche Verzeichnisstrukturen kann recht mühsam sein. Paperclip kann in solchen Situationen nützlich sein. Es ist ein großartiges Tool zum Hochladen und Speichern von Bildern in S3-Buckets mit AWS.

Bei RailscarmaWir entwickeln und bieten modernste Webanwendungsdienste unter Verwendung von Ruby-Frameworks für unsere Kunden auf der ganzen Welt.
Sie suchen innovative Lösungen für andere Probleme im Zusammenhang mit der Schienenentwicklung? Nehmen Sie jetzt Kontakt mit uns auf!

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman