Erlang 如何允许用户在ChicagoBoss中下载文件

Erlang 如何允许用户在ChicagoBoss中下载文件,erlang,chicagoboss,Erlang,Chicagoboss,我生成一个xml并将其存储到某个位置,比如myproject/media/doc.xml,因为我是erlang的新手开发人员。我所知道的是,我必须将请求头设置为 "Content-Disposition", "attachment; filename=\"" + Filename + "\"" 但我不知道如何与芝加哥老板达成这一目标。 我浏览了以下链接: 但我仍然没有弄清楚如何做到这一点。我们试图做的是: download_xml('GET', [])-> Fun = fun (

我生成一个xml并将其存储到某个位置,比如myproject/media/doc.xml,因为我是erlang的新手开发人员。我所知道的是,我必须将请求头设置为

"Content-Disposition", "attachment; filename=\"" + Filename + "\""
但我不知道如何与芝加哥老板达成这一目标。 我浏览了以下链接:

但我仍然没有弄清楚如何做到这一点。我们试图做的是:

download_xml('GET', [])->
    Fun = fun (Socket, Transport) ->
      Transport:sendfile(Socket, "/home/laxmikant/Desktop/demo.xml")
    end,
    Req2 = cowboy_req:set_resp_body_fun( F, Req),%% Req is available here
    Req3 = cowboy_req:set_resp_header(<<"Content-Disposition">>, "GET", Req2),
    Req4 = cowboy_req:set_resp_header(<<"attachment;filename=\"demo.xml\"">>, "GET", Req3),
     Req5 = cowboy_req:set_resp_header(<<"Content-Length">>, "GET",  Req4),
     Req6 = cowboy_req:set_resp_header(<<"1024">>, "GET",  Req5),
    cowboy_req:reply(200, [
        {<<"content-type">>, <<"application/octet-stream">>}
    ], "", Req6).

但是ChicagoBoss请求对象似乎与Cowboy请求不匹配。

在您提供的第一个链接中,有一种方法可以将文件存储在priv/static中。这是最简单的解决方案,不需要设置标题。你的解决方案有什么问题?@tkowal-我想,我不知道如何设置第一个链接的标题?你根本不需要这么做。如果将文件放入priv/static/file.ext,然后将浏览器指向:http://yoursite/static/file.ext,则CB将自动为您设置标题。您甚至不需要编写任何控制器代码。@tkowal:-酷,我不知道这个功能。现在开始工作了。谢谢你能再帮我一个忙吗?如何使用“另存为”弹出窗口使浏览器下载文件?它会自动保存到下载目录。我想,我可能需要用js做点什么。这个功能是特定于浏览器的。大多数图片将简单地显示。将下载其他文件,并根据您的浏览器设置,提示您保存这些文件的位置。当用户将浏览器配置为使用一个文件夹时,不要破坏强制“另存为”窗口的用户体验: