使用Azure Function从Azure Blob存储下载文件将返回不同的文件大小

贝林博利尼奥

我们正在尝试使用Azure函数为Azure Blob存储中托管的文件提供服务。提取它们时,出现以下错误:

Uncaught (in promise) Error: Length in header does not match actual data length: X != Y

我对这类事情不是很精通,但是我们的开发人员正在绞尽脑汁,而且我也变得空虚。

我们认为是罪魁祸首的Azure函数中的代码段是:

const streamToBuffer = async (readableStream) => {
  return new Promise((resolve, reject) => {
    const chunks = [];
    readableStream.on('data', (data) => {
      chunks.push(data instanceof Buffer ? data : Buffer.from(data));
    });
    readableStream.on('end', () => {
      resolve(Buffer.concat(chunks));
    });
    readableStream.on('error', reject);
  });
};

编辑:

    const blobClient = containerClient.getBlobClient(path);

    if (await blobClient.exists()) {
      const downloadBlockBlobResponse = await blobClient.download();

      const content = (
        await streamToBuffer(downloadBlockBlobResponse.readableStreamBody)
      ).toString();

编辑2:

跟踪中的错误:

Uncaught (in promise) Error: Can not parse environment file at god3.js:16
Uncaught (in promise) Error: Length in header does not match actual data length: X != Y
Error while trying to use the following icon from the Manifest: $url (Download error or resource isn't a valid image)

通过Azure功能为数据提供服务时,我们只会遇到此问题。我们尝试将逻辑托管在其他平台上,并且在提取文件时可以使用。

函数的附加部分:

  const containerClient = blobServiceClient.getContainerClient('site');

    const blobClient = containerClient.getBlobClient(path);

    if (await blobClient.exists()) {
      const downloadBlockBlobResponse = await blobClient.download();

      const content = (
        await streamToBuffer(downloadBlockBlobResponse.readableStreamBody)
      ).toString();

      context.res = {
        headers: {
          'Content-Type': downloadBlockBlobResponse.contentType,
        },
        body: content,
      };
    } else {
      context.res = {
        status: 404,
      };
    }
  } else {
    context.res = {
      status: 401,
      headers: { 'WWW-Authenticate': 'Basic realm=Access to the staging site' },
      body: { success: false },
    };
  }
};

任何指针将不胜感激。

谢谢

贝林博利尼奥

我们发现了问题。

我们正在对二进制文件进行字符串化处理,BabylonJS不满意。

解决的办法是在函数中添加文件类型检查。

      const content = await streamToBuffer(
        downloadBlockBlobResponse.readableStreamBody,
      );
      const fileType = path.split('.').slice(-1)[0];
      context.res = {
        headers: {
          'Content-Type': downloadBlockBlobResponse.contentType,
        },
        body: textPlainType.has(fileType) ? content : content.toString(),
      };

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从Azure Blob存储下载文件的示例

来自分类Dev

Azure Blob存储与下载文件有关的问题

来自分类Dev

从Azure存储Blob下载文件的简单PHP cURL方法

来自分类Dev

Azure管道-使用Azcopy下载文件

来自分类Dev

Azure Blob存储下载所有文件

来自分类Dev

Azure Blob存储下载所有文件

来自分类Dev

如何使用PHP将Azure存储Blob下载为本地文件?

来自分类Dev

Azure:下载上传到Azure Blob存储的文件时大小为0,编码错误

来自分类Dev

使用Azure Function处理文件

来自分类Dev

将 csv 文件写入 azure blob 存储

来自分类Dev

无法使用 SSIS 从 Azure blob 存储下载页面 blob 类型文件

来自分类Dev

使用Azure功能将文件下载并存储到Azure

来自分类Dev

如何从Azure Blob存储将文件下载到浏览器

来自分类Dev

从Azure存储Blob以安全方式将大文件下载到Angle Client

来自分类Dev

Azure Blob容器文件下载

来自分类Dev

Azure Blob文件下载链接

来自分类Dev

使用门户同时将文件上传到Azure文件共享,并使用ShareClient库作为WebJob下载文件

来自分类Dev

如何使用c#在单个请求中从Azure Blob存储下载多个文件?

来自分类Dev

如何使用 Powershell 从 Azure 存储下载 blob 文件并将其保存到 FTP 服务器?

来自分类Dev

使用 Java 在 Azure Blob 存储中读取文件的文件属性

来自分类Dev

使用PHP的Azure文件存储

来自分类Dev

使用REST API和C#将PDF文件上传到Azure Blob存储(不使用任何AZURE STORAGE SDK)

来自分类Dev

Windows Azure存储Blob使用Express压缩文件

来自分类Dev

使用API在Azure Blob存储中编辑文件

来自分类Dev

在Azure Function中使用Azure Blob存储输出绑定保存多个Blob

来自分类Dev

从azure devops服务器下载文件将错误数据写入文件

来自分类Dev

手动将文件上传到Azure Blob存储

来自分类Dev

Azure数据工厂将变量存储到Blob中的文件

来自分类Dev

将文件保存到Azure Blob存储中

Related 相关文章

  1. 1

    从Azure Blob存储下载文件的示例

  2. 2

    Azure Blob存储与下载文件有关的问题

  3. 3

    从Azure存储Blob下载文件的简单PHP cURL方法

  4. 4

    Azure管道-使用Azcopy下载文件

  5. 5

    Azure Blob存储下载所有文件

  6. 6

    Azure Blob存储下载所有文件

  7. 7

    如何使用PHP将Azure存储Blob下载为本地文件?

  8. 8

    Azure:下载上传到Azure Blob存储的文件时大小为0,编码错误

  9. 9

    使用Azure Function处理文件

  10. 10

    将 csv 文件写入 azure blob 存储

  11. 11

    无法使用 SSIS 从 Azure blob 存储下载页面 blob 类型文件

  12. 12

    使用Azure功能将文件下载并存储到Azure

  13. 13

    如何从Azure Blob存储将文件下载到浏览器

  14. 14

    从Azure存储Blob以安全方式将大文件下载到Angle Client

  15. 15

    Azure Blob容器文件下载

  16. 16

    Azure Blob文件下载链接

  17. 17

    使用门户同时将文件上传到Azure文件共享,并使用ShareClient库作为WebJob下载文件

  18. 18

    如何使用c#在单个请求中从Azure Blob存储下载多个文件?

  19. 19

    如何使用 Powershell 从 Azure 存储下载 blob 文件并将其保存到 FTP 服务器?

  20. 20

    使用 Java 在 Azure Blob 存储中读取文件的文件属性

  21. 21

    使用PHP的Azure文件存储

  22. 22

    使用REST API和C#将PDF文件上传到Azure Blob存储(不使用任何AZURE STORAGE SDK)

  23. 23

    Windows Azure存储Blob使用Express压缩文件

  24. 24

    使用API在Azure Blob存储中编辑文件

  25. 25

    在Azure Function中使用Azure Blob存储输出绑定保存多个Blob

  26. 26

    从azure devops服务器下载文件将错误数据写入文件

  27. 27

    手动将文件上传到Azure Blob存储

  28. 28

    Azure数据工厂将变量存储到Blob中的文件

  29. 29

    将文件保存到Azure Blob存储中

热门标签

归档