I'm looking for a simple way to upload a file (an xml file) to the public directory of Rails 3. Once it's there I want to open it, parse the contents and delete the file after that.
Whenever I searched for file upload I encountered Paperclip. But I don't want to associate the file with an object. I just want to upload it. What's the easiest way to do this?
a. Form
<%= form_for :file_upload, :html => {:multipart => true} do |f| %>
<%= f.file_field :my_file %>
<%= f.submit "Upload" %>
<% end %>
b. controller
def file_upload
require 'fileutils'
tmp = params[:file_upload][:my_file].tempfile
file = File.join("public", params[:file_upload][:my_file].original_filename)
FileUtils.cp tmp.path, file
... # YOUR PARSING JOB
FileUtils.rm file
end
But you can parse just tempfile, so you don't need to copy it to public dir and it will automatically deleted
I received an error indicating "undefined method `cp' for File:Class". Realized that this should actually be updated as follows:
Right code for file_uplad method:
def file_upload
tmp = params[:file_upload][:my_file].tempfile
require 'ftools'
file = File.join("public", params[:file_upload][:my_file].original_filename)
FileUtils.cp tmp.path, file
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With