2016-05-23 3 views
0

Dies ist das Beispiel in der Dokumentation für Rails, wenn Sie hochgeladene Dateien speichern.Rails 4 - Erstellen eines Ordners in der Öffentlichkeit, um hochgeladene Dateien zu speichern

Das funktioniert in Ordnung, aber was ist, wenn ich für jeden Upload einen eindeutigen Ordner erstellen wollte?

def upload 

    // How to add this to the path of the saved file?? 
    uid = Digest::SHA1.hexdigest([Time.now, rand].join) 


    uploaded_io = params[:person][:picture] 
    File.open(Rails.root.join('public', 'uploads', uploaded_io.original_filename), 'wb') do |file| 
    file.write(uploaded_io.read) 
    end 


end 

Antwort

2

einfach das Verzeichnis erstellen, wenn, fügen Sie es dann zu File.open

dir = Rails.root.join('public', 'uploads', uid) 
Dir.mkdir(dir) unless Dir.exist?(dir) 
File.open(dir.join(uploaded_io.original_filename), 'wb') do |file| 
    file.write(uploaded_io.read) 
end 
0

konnte nicht Sie betrachten Carrierwave oder Paperclip zu verwenden, um Ihre Dateien hochladen? Diese Edelsteine ​​sind sehr einfach zu bedienen.

+0

Es hat nichts mit Active zu tun hat. Ich möchte sie hochladen, verwenden und löschen. Ist Paperclip nicht dafür geeignet? –

+0

Eigentlich verwende ich carrierwave in meinen Projekten ... verwalten Sie diese Dateien auf einigen Modellattributen? Wenn ja, schlage ich wirklich diesen König der Edelsteine ​​vor. Wenn nicht, würde ich vorschlagen, ein Modell zu erstellen, nur um es zu verwalten (d. h. UploadFile Modell nur mit Datei: string attr) –

Verwandte Themen