当前位置:  开发笔记 > 前端 > 正文

在rails应用程序中设置下载文件的文件名

如何解决《在rails应用程序中设置下载文件的文件名》经验,为你挑选了2个好方法。

我有一个控制器操作,允许用户下载扩展名为.ppt的文件.它不是真正的powerpoint二进制文件,只是powerpoint可以读取的xml-ish格式.该文件是从名为ElementsController的控制器的show动作下载的,但是show动作实际上并未在控制器中定义,但app/views/elements/show.ppt.builder中有一个模板文件.我在config/initializers/mime_types.rb中注册了Mime :: Type:

Mime::Type.register "multipart/related", :ppt

并正确下载文件,并在Windows系统上使用powerpoint打开,但问题是文件名.该文件的名称是3.ppt,其中三个是url中的id参数.我想知道是否有办法将文件名设置为比3.ppt更具描述性的东西.

谢谢,

-C



1> jonnii..:

你可以使用send_data:

send_data pptdata, :filename => 'your_file_name.ppt', 
   :disposition => 'inline', :type => "multipart/related"

这样做的另一个好处是你可以使用x-sendfile,这样你的mongrel/thin就不会在客户端下载数据时等待.


另一种选择是拥有如下路线:

/elements/3/files/foo.ppt

然后在您的FilesController的show方法中,您可以发送任何id参数.



2> 小智..:

一个可能的例子:

def show
    @item = Item.find(params[:id])
    respond_to do |format|
        format.html # show.html.erb
        format.ppt {
            response.headers['Content-Disposition'] = "attachment; filename=\"#{@item.filename}.ppt\""
        } # show.ppt.erb
        format.xml  { render :xml => @item }
    end
end

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有