f
print (length bs)
send bs
будет держать всю bs в памяти когда отправляет? То есть было бы тут правильнее два раза файл считывать
"правильно" - понятие относительное. Во-первых, можно и считывать, напишите, чтобы считывало - будет считывать. Во вторых, "два раза считывать" может и не получиться. Что если файл физически можно только единожды прочесть, например? Операции length и send не могут знать что там "правильно" и откуда bs вообще берётся.
сначала length всё загрузит в память, а потом по мере отправки будет по кусочкам из памяти выгружаться. или не будет.
можно взять https://hackage.haskell.org/package/unix-2.7.2.2/docs/System-Posix-Files.html#v:fileSize
с потоком не будет работать
можно явно указать два места назначения через ZipSink https://hackage.haskell.org/package/conduit-1.3.4.2/docs/Data-Conduit.html#g:18 и сделать подсчет длины инкрементальным. Это если по логике программы длину не нужно знать до отправки данных
речь шла об HTTP. Content-length надо отправить до того, как начёшь отправлять тело
https://t.me/haskellru/378765
я на это возразил
возможно я не понял тред, но octet-stream сам по себе не принуждает отправлять content-length если указан Transfer-Encoding: chunked
@SorokinAnton хочет в браузере прогресс скачивания видеть
каким потоком, у него файл же
Выше ответил про chunked
ну я понял, это ответ на совсем другой вопрос
Обсуждают сегодня