当前位置: 首页 > 知识库问答 >
问题:

通过超文本传输协议触发请求读取大块文件的Azure函数

漆雕皓轩
2023-03-14

我在Azure function中有一个API,它使用Http触发器来接收数据并将其发送到本地应用程序。我们有用户界面前端,用户可以上传大文件大小(没有限制),这将发送数据块的API。

我知道应用程序的功能限制是100MB,我也看到处理大文件的建议是使用Blob存储。然而,对于同步流程,我们希望通过API来实现这一点(避免在中间流程中将数据存储在blob存储中)。

有没有一种方法可以通过Http触发器请求以块的形式接收数据?例如:UI-

例如:公共静态异步任务运行([HttpTrigger(AuthorizationLevel.Function,“post”,Route=null)]HttpRequest req,ILogger日志)

在这里,如果发送方已经在块中流式传输数据,我如何以块的形式从 req 中读取数据?如果我读到下面的内容,只要有效载荷是

_bufferSize = 1048576;
byte[] datapayLoad;
while (dataRead >0)
{
dataRead = req.Body.Read(datapayLoad, 0, _bufferSize);
....
}

感谢您在这方面的帮助。

共有2个答案

史绍晖
2023-03-14

需要分块读取数据吗?如果发送者可以写一个文件(分块或一次)并在文件写完后发布一个事件,那就太好了。您的函数可以在该事件上触发,并直接从blob存储中读取文件。

显式块读取可能会引入不必要的复杂性,并且从长远来看可能不可靠。只是一个建议。

汪博艺
2023-03-14

我认为一个解决方案可以是在您的UI/App和Azure Function API之间放置Azure事件中心。这样,您可以捕获发送数据块的每个事件,并正确地触发函数。

 类似资料:
  • 我正在使用GWT和Spring controller来管理http流量。有些请求可能需要很长时间,但我希望在超过给定时间时终止请求。 我如何配置超时Spring。我也使用Apache Tomcat 7.0。我试图在tomcat上inrease最大线程,但有一段时间tomcat工作缓慢,因为请求线程不会死。

  • 我有一个由Python构建的API服务器。我需要一组客户端/计算机通过发出http post请求将数据发送到API服务器。 这里的数据实际上是html内容。(注意:我没有将合法数据转换为HTML/XML格式,数据本身就是我从web上收集的HTML),通常每页约200KB。我正试图通过使用串行/串行和压缩来尽可能减轻网络负载。 我正在考虑通过网络发送原始超文本标记语言。有没有类似序列化html对象的

  • 我有专有的基于http的API要从JMeter测试。不幸的是,API的一些endpoint希望http DELETE方法带有请求体(我知道它的API设计有问题,使用DELETE with request body,但我无法更改该API,需要对其进行测试)。 如何从JMeter测试它?似乎标准的HttpRequest采样器在没有任何警告的情况下默默忽略了我的身体有效载荷。(当我在《邮递员》中尝试它时

  • 我是新的Kafka,我试图通过超文本传输协议从外部应用程序发布数据,但我找不到这样做的方法。 我已经在kafka中创建了一个主题,并对其进行了测试,以生成和使用消息,但我不知道如何通过http插入/发布消息,我尝试调用以下url来检索主题,但它没有检索任何数据http://servername:2181/topics/ 我使用的是cloudera 5.12.1。

  • 我有以下伪代码 我想要的是,我循环遍历一个对象数组,每个对象都获得相关的用户和产品,然后订阅用户和产品。我怎么能那样做?

  • 我用Go编写了一个简单的服务器: 以及一个用Python编写的用于测试的简单客户端。以下是代码: 每次客户端访问服务器时,服务器都会产生这个错误: 我知道如何在Go中处理JSON Post请求 Python版本==3.4 Go版本==1.7 先谢谢你。