gpt4 book ai didi

ajax - 如何通过 Azure 网站上的 Node.js 应用程序将大文件上传流传输到 Azure Blob 存储?

转载 作者:太空宇宙 更新时间:2023-11-03 22:53:15 26 4
gpt4 key购买 nike

我正在使用 Azure 媒体服务和 Node.js 构建视频服务到目前为止,一切都进展顺利,但是当我尝试将应用程序部署到 Azure Web Apps 进行托管时,任何大文件都会失败并出现 404.13 错误。

是的,我知道maxAllowedContentLength,但不知道,这不是解决方案。它最多只能达到 4GB,这是可悲的 - 即使是 HDR 环境贴图现在也很容易超过这个数量。我需要让用户能够上传最大 150GB 的文件。然而,当 azure web 应用程序收到多部分请求时,它似乎会将其缓冲到内存中,直到达到字节或秒的某个阈值(一旦达到该阈值,如果我的连接速度很慢,它会返回 404.13 或 502),然后再运行我的任何服务器逻辑。

我在服务器代码中尝试了 Transfer-Encoding: chunked header ,但即使这会有所帮助,因为 Web Apps 不允许代码运行,但这实际上并不重要。

郑重声明:我在后端使用 Sails.js 和 Skipper正在处理到 Azure Blob 服务的流管道。无论文件大小如何,本地主机显然都可以正常工作。我在 MSDN 论坛上复制了这个问题,但速度一如既往地慢。你可以去那里看看我到目前为止发现了什么:enter link description here

客户端我使用 Ajax FormData 序列化字段(一个文本字段和一个文件)并发送它们,甚至使用 progress 来跟踪上传进度。

有什么办法可以实现这个功能吗?我只是想让它让我的服务器端逻辑处理数据流,而不需要缓冲该死的东西。

最佳答案

您最好让客户端直接上传到 Azure Blob 存储帐户中的容器,而不是通过 Web 应用程序运行所有这些数据。

您需要在 Azure 存储帐户上启用 CORS 才能支持此操作。然后,在您的 Web 应用程序中,当用户需要上传数据时,您将为您希望客户端上传到的存储帐户容器生成 SAS token 并将其返回给客户端。然后,客户端将使用 SAS token 将文件上传到您的存储帐户。

在后端,您可以启动网络作业,在文件上传后对文件进行所需的任何处理。

更多详细信息和示例 Ajax 代码可在 this blog post 中找到。来自 Azure 存储团队。

关于ajax - 如何通过 Azure 网站上的 Node.js 应用程序将大文件上传流传输到 Azure Blob 存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com