我已经尝试过针对此问题的所有其他“欺骗”,但似乎其中许多都已经过时了。以下代码“成功”运行并上传图像并正确设置 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]:第一个参数必须是字符串类型或者 Buffer、ArrayBuffer、Array 或类数组对象的实例。收到未定义
我觉得很搞笑,因为如果我这样做
typeof data
它会返回一种 string
提前致谢,因为此时我已经用头撞墙几个小时了。
Azure Blob 存储不是这样工作的。本质上,blob 内容是您上传的数据。在您的情况下,您将二进制数据转换为 base64 字符串并上传该字符串,以便存储的 blob 是字符串。
您可以做一些事情:
<img src="your-blob-url" />
的内容来显示图像。<img src="data:blob-content-type;base64,your-base64-encoded-content" />
的内容。