rails ajax上传文件以及controller处理

本文介绍了如何使用Ajax进行文件上传操作,并展示了Rails后端如何接收并保存这些文件。前端部分利用FormData对象来构建请求数据,而后端则通过检查文件名是否为空来决定是否保存文件。
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

  

 
 

转载于:https://www.cnblogs.com/virus1996/p/8952438.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值