Ruby 于 rails 文件上传和下载
Ruby on rails File Upload and download
这里我要实现的是rails上ruby上传文件然后下载的功能。
首先我在应用程序控制器中添加功能
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=>"upload", :controller=>"cplectures"}
我如何在没有回形针或其他宝石的情况下修复它,然后如何使用下载按钮从前端下载此文件。
谢谢大家
您的表格似乎是我们发送 GET
的地方,它应该是 POST
,反之亦然。首先,通过 运行:
检查您的路线
rake -T
并在那里找到您的控制器和操作组合。检查预期的 http 动词,并将其与您的表单一起发送,如下所示:
<%= form_tag "", method: :get %>
假设您的 post 发生在您所在的同一条路线上。
这里我要实现的是rails上ruby上传文件然后下载的功能。
首先我在应用程序控制器中添加功能
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=>"upload", :controller=>"cplectures"}
我如何在没有回形针或其他宝石的情况下修复它,然后如何使用下载按钮从前端下载此文件。 谢谢大家
您的表格似乎是我们发送 GET
的地方,它应该是 POST
,反之亦然。首先,通过 运行:
rake -T
并在那里找到您的控制器和操作组合。检查预期的 http 动词,并将其与您的表单一起发送,如下所示:
<%= form_tag "", method: :get %>
假设您的 post 发生在您所在的同一条路线上。