我已经尝试了所有其他的“欺骗”这个问题,但似乎他们中的许多人已经过时了。下面的代码“成功”运行并上传了图像,并正确设置了mimetype,但它没有呈现为图像。base64内容在文件中,但不会在任何图像编辑器或浏览器中呈现。
以下是上传时图像数据的外观:
{
type: 'Buffer',
data: [
137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13,
73, 72, 68, 82, 0, 0, 4, 56, 0, 0, 3, 96,
8, 6, 0, 0, 0, 201, 106, 216, 155, 0, 0, 0,
9, 112, 72, 89, 115, 0, 0, 11, 19, 0, 0, 11,
19, 1, 0, 154, 156, 24, 0, 15, 227, 3, 73, 68,
65, 84, 120, 156, 204, 253, 119, 184, 157, 85, 181, 254,
15, 223, 171, 239, 222, 83, 8, 189, 10, 130, 224, 1,
81, 144, 42, 136, 132, 162, 71, 81, 241, 128, 128, 160,
210, 148, 46, 82,
... 1041133 more items
]
}
字符串
下面是我的代码:
const data = req.files?.file.data.toString('base64');
const uploadBlobResponse = await blockBlobClient.upload(data, data.length, { blobHTTPHeaders: { blobContentType: body.mimeType }});
型
我也试过使用uploadData
,但失败了,并出现以下错误:
上载文件时出错TypeError [ERR_INVALID_ARG_TYPE]:第一个参数必须是string类型,或者是Buffer、ArrayBuffer或Array的示例或类ArrayObject。收到未定义
我觉得这很好笑,因为如果我执行typeof data
,它将返回string
类型
提前感谢,因为我已经在这一点上撞了几个小时的墙。
1条答案
按热度按时间cigdeys31#
Azure Blob存储不以这种方式工作。基本上,blob内容是您上传的数据。在本例中,您将二进制数据转换为base64字符串并上传该字符串,以便blob存储为字符串。
你可以做几件事:
*存储二进制数据。您可以简单地将数据存储为字节数组,而不是将数据转换为base64编码的字符串。然后就可以使用类似
<img src="your-blob-url" />
的东西来显示图像。*读取应用程序中的数据。如果你想将数据存储为base64编码的字符串,那么为了显示该数据,你需要读取blob的内容,然后使用类似
<img src="data:blob-content-type;base64,your-base64-encoded-content" />
的东西。