Di solito sono i piccoli compiti che richiedono tempo a frustrarci di più. Come caricare un file su S3; il requisito è piuttosto semplice ma il metodo scelto per caricare il file deciderà l'efficienza dell'attività. Poiché il caricamento di file è una funzionalità richiesta dalla maggior parte delle applicazioni, RailsCarma ha compilato un breve tutorial su uno dei metodi migliori per svolgere questa attività in modo efficiente: utilizzare Paperclip e Dropzone.js.
- Graffetta per fogli è una scelta popolare per caricare immagini e file poiché offre ottime funzionalità per gestire gli allegati; La gemma "graffetta" è l'opzione ideale. Paperclip ti consente di caricare più immagini e file, generare miniature e persino ridimensionare automaticamente le immagini. Vanta una comunità ampia e attiva che lo rende la scelta migliore della maggior parte degli sviluppatori.
- Dropzone.js è una libreria open source con funzionalità di trascinamento dei file (con anteprima dell'immagine).
- Amazon S3 è un semplice dispositivo di archiviazione per l'archiviazione dei dati. Possiamo usarlo per recuperare immagini e tutti i tipi di file.
Perché Graffetta?
Paperclip è uno strumento popolare per il caricamento di file per i seguenti motivi:
- Supporta la memorizzazione nella cache dei file:
Se un modulo non viene convalidato, non vogliamo che l'utente riprenda il suo file e lo ricarichi. Pertanto, la memorizzazione nella cache dei file è necessaria dal punto di vista UX. E conserva anche la larghezza di banda.
- Elabora le immagini
Paperclip è in grado di ridimensionare e ritagliare le immagini in diversi formati consentendo così allo sviluppatore di scegliere la libreria.
- Semplifica il compito!
La gemma Paperclip non inquina il tuo codice ed è facile da testare!
- Consente l'elaborazione dei file
Paperclip consente l'elaborazione dei file per l'estrazione dei dati EXIF e la creazione di miniature di PDF, PSD, DOC e XLSX caricati.
- Fornisce supporto CDN e servizi di archiviazione
Questo è un grande vantaggio poiché vogliamo mantenere la larghezza di banda dei nostri server la più bassa possibile ed evitare possibili perdite di dati dovute a guasti del server.
- Offre l'elaborazione al volo
Paperclip elabora immagini e file in base alla richiesta. Si tratta di una funzionalità innovativa che consente agli sviluppatori di creare contenuti personalizzati che si adattano meglio alle diverse situazioni.
Cosa sono gli eventi asincroni di Dropzone?
- file aggiunto: Quando un file viene aggiunto all'elenco.
- file rimosso: Utilizzato ogni volta che un file viene rimosso dall'elenco. Puoi ascoltarlo ed eliminare il file dal tuo server, se lo desideri.
- miniatura: Quando la miniatura è stata generata. Riceve l'URL dei dati come secondo parametro.
- errore: Si è verificato un errore riceve il messaggio di errore come secondo parametro. E se l'errore era dovuto a xmlhttprequest, l'oggetto xhr viene ricevuto come terzo parametro.
- in lavorazione: Quando un file viene elaborato (poiché è presente una coda, non tutti i file vengono elaborati immediatamente). Questo evento era precedentemente chiamato ProcessingFile.
- gocciolare: L'utente ha lasciato cadere qualcosa nella zona di rilascio.
Come possiamo configurare Paperclip nella nostra applicazione?
- has_attached_file: risorsa
- :archiviazione => :s3
- :S3_host_name => ENV["S3_HOST_NAME"]
- :S3_regione => ENV[“S3_REGIONE”]
- :Protocollo_S3 => ENV[“PROTOCOLLO_S3”]
- :path => “:account_id/:class/:source_id/:attachment/:file_name”,:s3_headers => {'ContentDisposition' => 'allegato', 'content-type' =>'application/octet_stream'},
:bucket => ENV[“S3_BUCKET”],
:s3_credentials => Proc.nuovo{|a| a.istanza.s3_credentials} - Do_not_validate_attachment_file_type :asset
- def s3_credenziali
{:access_key_id => ENV[“S3_ACCESS_KEY_ID”], :secret_access_key => ENV[“S3_SECRET_ACCESS_KEY”]}
FINE
Come possiamo gestire percorsi personalizzati nella nostra applicazione?
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(/\./, '') se img_extension.include? (extname) return “immagini” else return extname end end Paperclip.interpolates :file_name do |attachment, style|file_name = attach.instance.asset_file_name End
I dati nel bucket S3 possono essere recuperati quando necessario. Ma ha una limitazione: gestire percorsi personalizzati per diverse strutture di directory può essere piuttosto complicato. La graffetta può essere utile in tali situazioni. È un ottimo strumento per caricare e archiviare immagini nel bucket S3 utilizzando AWS.
A Railscarma, sviluppiamo e forniamo servizi di applicazioni web all'avanguardia utilizzando i framework Ruby per i nostri clienti in tutto il mondo.
Desideri soluzioni innovative per qualsiasi altro problema relativo allo sviluppo delle ferrovie? Mettiti in contatto con noi adesso!