我需要在我的氮气应用程序中提供文件下载功能。
原则上我需要像这样设置标题:
wf:header("Content-Disposition", "attachment; filename=\"" ++ Filename ++ "\""),
但现在我无法在 Nitrogen API 中找到一个函数来发送我的文件的数据 block 。
我需要分段上传文件,因为它们可能非常大,除此之外,这些文件在本地存储中不可用,但二进制数据是从其他模块获取的。所以在实践中我需要自己处理将数据 block 发送到 http 流。
任何想法,或示例如何做到这一点,可以使用什么 api 函数?
最佳答案
我能给你的最好答案是一个answered几天前在 Nitrogen 邮件列表上:
没有很好的方法来处理这个问题。 有两种方法可以解决这个问题:
1)使用底层服务器的流媒体机制(比如制作 牛仔特定的调度表,以牛仔处理程序模块为目标 处理流媒体)或雅司病输出文件。
2) 使用 cowboy,有一些 hack 可以在
simple_bridge 如果你使用牛仔。如果你的模块的 main()
函数
返回元组:{stream, StreamFun}
其中 StreamFun 是一个函数
arity 2 (fun(Socket, Transport)
- Transport 是一个牧场
运输)。真的,这只是一种快捷方式,可以让您
使用 Transport:send(socket) 发送数据。我承认我没做过
这是以前的,但它应该稍微修改一下。
将此作为实际选项添加到 simple_bridge 和 Nitrogen 中 可能是值得的。
关于http - 二郎氮文件下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19027081/