1

我需要在我的氮气应用程序中提供文件下载功能。

原则上我需要像这样设置标题:

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

但现在我在 Nitrogen API 中找不到发送文件数据块的函数。

我需要分部分上传文件,因为它们可能非常大,除此之外,文件在本地存储中不可用,但二进制数据是从其他模块获取的。所以在实践中,我需要自己处理将数据块发送到 http 流。

任何想法或示例如何做到这一点,可以使用哪些 api 函数?

4

1 回答 1

1

我能给你的最好答案是我几天前在 Nitrogen 邮件列表上回答的一个:

没有很好的方法来处理这个问题。有两种方法可以解决这个问题:

1) 使用底层服务器的流式传输机制(例如制作一个牛仔特定的调度表来定位一个处理流式传输的牛仔处理程序模块),或者一个 yaws 输出文件。

2) 使用牛仔,如果你使用牛仔的话,有一些技巧可以在 simple_bridge 中工作。如果您的模块的main()函数返回元组:{stream, StreamFun}其中 StreamFun 是一个具有 arity 2 的函数(fun(Socket, Transport)- Transport 是一个牧场传输)。实际上,这只是一种快捷方式,允许您使用 Transport:send(socket) 发送数据。我承认我以前没有这样做过,但它应该稍微修改一下。

将此作为实际选项添加到 simple_bridge 和 Nitrogen 可能是值得的。

于 2013-11-26T01:42:36.987 回答