Ladda upp filer direkt till S3 med gem och Dropzone.js

Det är oftast de små tidskrävande uppgifterna som frustrerar oss mest. Som att ladda upp en fil till S3; Kravet är ganska enkelt men metoden som väljs för att ladda upp filen kommer att avgöra uppgiftens effektivitet. Eftersom uppladdning av filer är en funktion som de flesta applikationer kräver, har RailsCarma sammanställt en kort handledning om en av de bästa metoderna för att få den här uppgiften effektiv: att använda Paperclip och Dropzone.js.

  • Gem är ett populärt val för att ladda upp bilder och filer eftersom det erbjuder fantastiska funktioner för att hantera bilagorna; 'gems' pärla är det bästa alternativet. Gem låter dig ladda upp flera bilder och filer, generera miniatyrer och till och med automatiskt ändra storlek på bilderna. Den har ett stort och aktivt community som gör det till det bästa valet för de flesta utvecklare.
  • Dropzone.js är ett bibliotek med öppen källkod med funktioner för att dra och släppa filer (med förhandsgranskning).
  • Amazon S3 är en enkel lagringsenhet för datalagring. Vi kan använda den för att hämta bilder och alla typer av filer.

Varför Gem?

Gem är ett populärt filuppladdningsverktyg av följande skäl:

  • Stöder filcache:
    Om ett formulär inte valideras vill vi inte att användaren ska välja sin fil igen och ladda upp den igen. Därför är filcacheläggning nödvändig ur UX-synpunkt. Och det sparar också bandbredden.
  • Bearbetar bilder
    Paperclip kan ändra storlek och beskära bilder till flera olika format, vilket gör att utvecklaren kan välja bibliotek.
  • Förenklar uppgiften!
    Gem gem förorenar inte din kod och är lätt att testa!
  • Tillåter filbehandling
    Paperclip tillåter filbearbetning för EXIF-dataextraktion och skapande av miniatyrbilder av uppladdade PDF-filer, PSD-filer, DOC-filer, XLSX-filer.
  • Ger support för CDN och lagringstjänster 
    Detta är ett stort plus då vi vill hålla bandbredden till våra servrar så låg som möjligt och undvika eventuell dataförlust på grund av serverfel.
  • Erbjuder On-The-Fly Processing
    Paperclip bearbetar bilder och filer på en begäran. Detta är en innovativ funktion som gör det möjligt för utvecklare att skapa anpassat innehåll som anpassar sig bäst till olika situationer.

Vad är Dropzone asynkrona händelser?

  • tillagd fil:  När en fil läggs till i listan.
  • borttagen fil: Används när en fil tas bort från listan. Du kan lyssna på detta och ta bort filen från din server om du vill.
  • Miniatyr: När miniatyrbilden har skapats. Den tar emot data-URL som andra parameter.
  • fel: Ett fel inträffade får felmeddelandet som den andra parametern. Och om felet berodde på xmlhttprequest, tas xhr-objektet emot som den tredje parametern.
  • bearbetning: När en fil bearbetas (eftersom det finns en kö, bearbetas inte alla filer omedelbart). Denna händelse kallades tidigare processingfile.
  • släppa: Användaren tappade något på droppzonen.

Hur kan vi konfigurera gem i vår applikation?

  • has_attached _file: tillgång
  • :lagring => :s3
  • :S3_host_name => ENV[“S3_HOST_NAME”]
  • :S3_region => ENV[“S3_REGION”]
  • :S3_protocol => ENV[“S3_PROTOCOL”]
  • :sökväg => “:account_id/:class/:source_id/:attachment/:file_name”,:s3_headers => {'ContentDisposition' => 'attachment', 'content-type' =>'applikation/octet_stream'},
    :hink => ENV[“S3_BUCKET”],
    :s3_credentials => Proc.new{|a| a.instance.s3_credentials}
  • Do_not_validate_attachment_file_type :tillgång
  • def s3_credentials
    {:access_key_id => ENV[“S3_ACCESS_KEY_ID”], :secret_access_key => ENV[“S3_SECRET_ACCESS_KEY”]}

slutet

Hur kan vi hantera anpassade sökvägar i vår applikation?

Paperclip.interpolates :attachment do |attachment, style|Image_extension = [“jpg”, “jpeg”, “gif”, “png”, “PNG”, “GIF”, “JPEG”, “JPG”] extname = Fil. extname(attachment.instance.asset_file_name).downcase.gsub(/\./, '') om img_extension.include? (extname) returnera “images” annars return extname end end Paperclip.interpolates :file_name do |attachment, style|file_name = attachment.instance.asset_file_name End

Data i S3-skopan kan hämtas när det behövs. Men det har en begränsning: att hantera anpassade sökvägar för olika katalogstrukturer kan vara ganska besvärligt. Gem kan vara användbart i sådana situationer. Det är ett utmärkt verktyg för att ladda upp och lagra bilder i S3-bucket med AWS.

Railscarma, utvecklar och tillhandahåller vi banbrytande webbapplikationstjänster med hjälp av rubys ramverk för våra kunder över hela världen.
Vill du ha innovativa lösningar för alla andra problem med rälsutveckling? Kontakta oss nu!

Prenumerera för de senaste uppdateringarna

relaterade inlägg

Om inläggsförfattare

Lämna en kommentar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *


sv_SESwedish