Reputation: 25237
This is the sample in the documentation for Rails, when saving uploaded files.
def upload
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
This works alright, but what if I wanted to create a unique folder, for every upload made?
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
Upvotes: 2
Views: 4870
Reputation: 906
Just create the directory if missing, then add it to 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
Upvotes: 8
Reputation: 1435
Couldn't you consider to use Carrierwave or Paperclip to upload your files? These gems are very easy to use.
Upvotes: 1