Ruby on rails文件上传和下载

时间:2016-04-24 21:53:14

标签: ruby-on-rails ruby ruby-on-rails-3

这里我想实现上传文件然后在ruby上下载的功能。

首先我在Application Controller中添加功能

def uploadFile(file)
if !file.original_filename.empty
  @filename = getFileName(file.original_filename)
  File.open("#{RAILS_ROOT}/public/files/#{@filename}", "wb") do |f|
    f.write(file.read)
  end
  return @filename
end
end

def getFileName(filename)
if !filename.nil
  return filename
end
end

def save(file, description)
@filename=getFileName(file.original_filename)
@filesize=getFileName(file.length)
@uploadfile = Uploadfile.new
@uploadfile.filename=@filename
@uploadfile.filesize=@filesize/1024
@uploadfile.description=description
@uploadfile.save
end

其次,我在我的控制器中添加上传文件上传。

def upload
@uploadfile = Uploadfile.new
unless request.get
  i=params[:file].size
  for num in(0..i-1)
  if filename=uploadFile(params[:file][num])
    savefiles(params[:file][num],params[:uploadfile][num])
  end
end
end
end

最后,我在new.html.erb中添加了html,这是我要上传文件并提交的页面。

  <%=form_tag ({:action=>"upload"}), :multipart=>true %>
  <divid="MyFile">
  <inputid="file"name="file[]"size="30"type="file"/></br>
  <inputtype="text"id="uploadfile_description"name="uploadfile[]"></br>
</div>
<inputtype="button"value="add"onclick="addText()"/>
<inputstyle="cursor:pointer"type="submit"value="upload"/>
<%=form_tag%>

最终,我仍然犯了这个错误。

没有路线匹配{:action =&gt;“upload”,:controller =&gt;“cplectures”}

如果没有回形针或其他宝石,我将如何修复它,之后如何使用下载按钮从正面下载此文件。 谢谢你们

1 个答案:

答案 0 :(得分:1)

似乎您的表单我们发送的GET应该是POST,反之亦然。首先,运行以下方法检查您的路线:

rake -T

找到你的控制器,动作组合。检查预期的http动词,并将其与您的表单一起发送:

<%= form_tag "", method: :get %>

假设您的帖子发生在您所在的相同路线上。