Sto sviluppando un'applicazione Ruby on Rails che richiede il caricamento/il download di file. Per la parte di upload ho usato la gemwave portante perché è molto facile da usare e flessibile. Il problema è: una volta caricato il file, ho bisogno di sapere alcune cose: se è un pdf invece di scaricare il file lo mostro in linea, e lo stesso vale per un'immagine. Come ottengo l'estensione e come posso farlo a inviare il file a un utente ?? Qualsiasi commento è apprezzato Grazie !!Carrierwave come ottenere l'estensione del file
risposta
Determinare estensione del file (suppongo un nome per uploader montato è 'file'):
file = my_model.file.url
extension = my_model.file.file.extension.downcase
quindi preparare il mimo e la disposizione vars:
disposition = 'attachment'
mime = MIME::Types.type_for(file).first.content_type
if %w{jpg png jpg gif bmp}.include?(extension) or extension == "pdf"
disposition = 'inline'
end
(aggiungere altre estensioni, se si desidera) .
E poi inviare il file:
send_file file, :type => mime, :disposition => disposition
Una volta caricato un file, il nome viene memorizzato nel database. Questo include anche l'estensione. Supponendo di avere un modello User
con un uploader montato come asset
, allora si può ottenere come:
user.asset.file.extension
Per quanto riguarda l'invio all'utente, se si chiama user.asset_url
, che vi darà l'URL in cui il file è caricato. L'utente può utilizzare quel link per ottenere il file. O sto fraintendendo cosa intendi con "invia il file ad un utente"?
Grazie per la risposta !! beh, voglio fare in modo che l'utente scarichi il file. Sai, scarica la finestra di dialogo (apri con .. oppure mantienilo o in caso di chrome keep o reject.) Pensavo che con un semplice send_file con parametri sarebbe stato tutto ok. – Wiggin
Bene, basta collegarsi al file allora. Puoi ottenere l'url con 'user.asset_url'. –
Sì, l'ho fatto! i tuoi consigli hanno funzionato perfettamente, grazie mille !! – Wiggin
Grazie mille, mi piace lo stile della tua soluzione e ha funzionato perfettamente. Di nuovo, grazie per la risposta!! – Wiggin
dove esattamente nei file di progetto delle rotazioni si posizionano la disposizione e il tipo MIME delle vars? – maumercado