Как разрешить пользователю скачивать файл в ChicagoBoss

Я генерирую один xml и сохраняю его в каком-то месте, скажем, myproject/media/doc.xml Поскольку я новичок в erlang. Я знал, что мне нужно будет установить заголовки запросов, например

"Content-Disposition", "attachment; filename=\"" + Filename + "\""

Но я не знаю, как добиться этого с помощью ChicagoBoss. Я прошел по ссылкам:

  1. Как загружать файлы в ChicagoBoss?
  2. как скачать файл с помощью ковбоя erlang?

Но до сих пор я не получил ясного представления о том, как это сделать. Что мы пытались сделать, так это:

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 Req.


person trex    schedule 21.01.2015    source источник
comment
В первой ссылке, которую вы предоставили, есть метод сохранения вашего файла в priv/static. Это самое простое решение, не требующее настройки заголовков. В чем заключалась ваша проблема с этим решением?   -  person tkowal    schedule 21.01.2015
comment
@tkowal - Я думаю, я не знаю, как установить заголовки из первой ссылки?   -  person trex    schedule 21.01.2015
comment
Вы не должны делать это вообще. Если вы поместите свой файл в priv/static/file.ext, а затем наведете браузер на: http://yoursite/static/file.ext, то CB автоматически установит заголовки для вас. Вам даже не нужно писать код контроллера.   -  person tkowal    schedule 21.01.2015
comment
@tkowal: - Круто, я не знал об этой функции. Теперь работает. Спасибо. Не могли бы вы сделать еще одну помощь? Как я могу заставить браузер загружать файл с сохранением как всплывающее окно? Автоматическое сохранение в каталог загрузок. Я думаю, мне может понадобиться что-то сделать с js.   -  person trex    schedule 22.01.2015
comment
Эта функция зависит от браузера. Большинство изображений будут просто отображаться. Другие файлы будут загружены, и в зависимости от настроек вашего браузера вам будет предложено, где их сохранить. Не нарушайте пользовательский опыт принудительным сохранением в виде окна, когда пользователи настроили свои браузеры на использование одной папки :)   -  person tkowal    schedule 22.01.2015
comment
@tkowal - Хорошо, спасибо! Получил ваше мнение ;) Спасибо за большую помощь!   -  person trex    schedule 22.01.2015
comment
@tkowal - Не могли бы вы помочь нам тоже stackoverflow.com/questions/28111155/   -  person trex    schedule 23.01.2015