新手问题 文件上传遇到的问题

luliangshu · 2013年11月13日 · 最后由 luliangshu 回复于 2013年11月15日 · 2340 次阅读
$i = 0
    $num = params[:node][:image][:imageAmount].to_i
    while $i < $num do
      uploaded_io = params[:node][:image][:imageList]["i"+$i.to_s][:file]
      File.open(Rails.root.join('public', 'uploads/'+params[:id], uploaded_io.original_filename), 'wb') do |file|
        file.write(uploaded_io.read)
      end
      $i += 1 
    end

我有上面一段代码 这样是没有问题的 但是我的 form 很多 不是每个都有都有上传的 而且对应的 action 是一个

所以想做判断 我加了 if

if params[:node].to_json.include?("imageList")
      $i = 0
      $num = params[:node][:image][:imageAmount].to_i
      while $i < $num do
        uploaded_io = params[:node][:image][:imageList]["i"+$i.to_s][:file]
          File.open(Rails.root.join('public', 'uploads/'+params[:id], uploaded_io.original_filename), 'wb') do |file|
          file.write(uploaded_io.read)
        end
        $i +=1
      end
    end

但这样 只能创建文件 不能写入了 是个空文件 还有如何重命名文件。。

额 哪位能回答下。。着急

重命名的话 上传完成后,再 rename 可以实现

File.rename(old ,new)

@sitoto 只能在上传创建完成后才能 rename 么

也可以 试试下面的方法

  1. 先建文件、打开 新文件
  2. 读取上传的 老文件
  3. 写入到 新文件。
File.open(newfile, "wb") do |saved_file|
  File.open(uploadfile, 'rb') do |read_file|
      saved_file.write(read_file.read)
  end
end

@sitoto 好的 3q 但是我第一个问题能帮我解答下么。为何我通过传过来的参数来判断我选择的是 image 模块 然后再调用 文件可以创建 但似乎不能写入。是空文件。

你的第一个问题,你自己调试一下。 一般别人不回答你的问题,是因为你提的问题提的不是很好,让人难回答。 第一个问题就是这样,代码片断放着,想回答的人,只能猜想可能是什么问题,,这多费劲呢。。

7 楼 已删除

@sitoto 额 好的 感谢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号