【发布时间】:2021-09-23 08:21:12
【问题描述】:
我在 Azure 函数中有一个 API,它使用 Http 触发器接收数据并将其发送到本地应用程序。我们有 UI 前端,用户可以在其中上传大文件大小(无限制),并将数据以块的形式发送到 API。
我知道功能 App 的限制是 100MB,我还看到处理大文件大小的建议是使用 Blob 存储。但是对于同步过程,我们希望通过API来实现(避免在中间过程中将数据存储在blob存储中)。
有没有一种方法可以通过 Http 触发请求以块的形式接收数据?例如:UI -> 分块发送数据 -> API(使用 HttpTrigger)分块读取数据并分块发送数据 -> 本地。
例如: 公共静态异步任务运行( [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req, ILogger 日志)
如果发送者已经在块中流式传输数据,我如何从块中读取数据? 如果我读到类似下面的内容,只要有效负载
_bufferSize = 1048576;
byte[] datapayLoad;
while (dataRead >0)
{
dataRead = req.Body.Read(datapayLoad, 0, _bufferSize);
....
}
感谢您在这方面的帮助。
【问题讨论】:
-
你找到解决方案了吗?我也有同样的要求
-
是的。我已经使它完全异步,例如:UI -> 上传到 Blob 存储,向 API 发送事件。然后 API 将该事件转发到存储队列(这是避免 http 会话空闲超时所必需的)。还有另一个 API 将从存储队列中读取并以块的形式下载 blob 并以块的形式写入本地。
标签: azure azure-functions azure-functions-core-tools