Эрланг скачать файл азота

Мне нужно обеспечить функцию загрузки файла в моем приложении азота.

В принципе мне нужно установить заголовки так:

wf:header("Content-Disposition", "attachment; filename=\"" ++ Filename ++ "\""),

но сейчас я не могу найти функцию в Nitrogen API для отправки блоков данных моего файла.

Мне нужно загружать файл порциями, потому что они могут быть очень большими, кроме того, файлы не доступны в локальном хранилище, но двоичные данные получены из других модулей. Поэтому на практике мне нужно самостоятельно обрабатывать отправку блоков данных в поток http.

Любая идея или пример, как это сделать, какую функцию API можно использовать?

1 ответ

Решение

Лучший ответ, который я могу вам дать, это тот, на который я ответил несколько дней назад в списке рассылки Nitrogen:

Существует не лучший способ справиться с этим. Есть два способа справиться с этим:

1) Использование потоковых механизмов нижележащего сервера (например, создание таблицы диспетчеризации для ковбоя, предназначенной для модуля-обработчика ковбоя, который имеет дело с потоковой передачей) или выходной файл.

2) Используя ковбоя, есть немного хака, который может работать в simple_bridge, если вы используете ковбоя. Если ваш модуль main() функция возвращает кортеж: {stream, StreamFun} где StreamFun - это функция с arity 2, которая (fun(Socket, Transport) - транспорт ранчо). На самом деле, это просто ярлык, который позволяет вам использовать Transport: send (socket) для отправки данных. Я признаю, что я не делал этого раньше, но это должно работать с небольшим изменением.

Добавление этого фактического параметра в simple_bridge и Nitrogen, вероятно, будет целесообразным.

Другие вопросы по тегам