rails ajax上传文件以及controller处理
ajax提交文件
var formData = new FormData(); formData.append('file', $('input[name="file"]')[0].files[0]); $.ajax({ url: '这里填action地址', type: 'POST', cache: false, data: formData, processData: false, contentType: false, });
文件
#将表单提交的文件上传到服务器工程下 def upload_file(file) if !file.original_filename.empty? @filename = file.original_filename #设置目录路径,如果目录不存在,生成新目录 Dir.mkdir("#{Rails.root}/public/upload") unless File.exist?("#{Rails.root}/public/upload") #写入文件 ##wb 表示通过二进制方式写,可以保证文件不损坏 File.open("#{Rails.root}/public/upload/#{@filename}", "wb") do |f| f.write(file.read) end return @filename end end
图片
def upload_file(file) @filename = file.original_filename Dir.mkdir("#{Rails.root}/public/upload") unless File.exist?("# {Rails.root}/public/upload") image_path = "#{Rails.root}/public/upload/#{@filename}" data = File.read(file.tempfile) img = File.new(image_path, "w+") if img img.syswrite(data) end img.close return @filename end