【发布时间】:2021-03-15 21:17:45
【问题描述】:
我们如何将图像(.jpg、.png)上传到 Azure blob 存储。一开始没有任何见解。
如果您使用过示例,希望看到并尝试这样做,任何有效的示例/网址都将有助于开始使用
这是我正在尝试上传 .jpg 文件并收到 400 错误,
image.forEach((element) async {
ImageDetailsUpload result = ImageDetailsUpload.fromJson(element);
var postUri = Uri.parse('$url/${result.fileName}?$code'); //Azure blob url
var request = new http.MultipartRequest("PUT", postUri); //Put method
request.files.add(
new http.MultipartFile.fromBytes(
'file',
await File.fromUri(Uri.parse(result.path)).readAsBytes(),
),
);
request.send().then((response) {
print(response.statusCode);
}, onError: (err) {
print(err);
});
});
图像是一个列表并保存文件名和文件路径,这是我得到的字节(见下图)
解决了上传但图片在服务器上损坏的问题 -
image.forEach((element) async {
ImageDetailsUpload result = ImageDetailsUpload.fromJson(element);
var postUri = Uri.parse('$url/${result.fileName}?$code');
var request = new http.MultipartRequest("PUT", postUri);
request.headers['X-MS-BLOB-TYPE'] = 'BlockBlob';
request.files.add(
new http.MultipartFile.fromBytes(
'file',
await File.fromUri(Uri.parse(result.path)).readAsBytes(),
),
);
request.send().then((response) {
print(response.statusCode);
}, onError: (err) {
print(err);
});
});
这似乎困扰着我。
还有更多问题,我注意到使用邮递员上传到 blob 存储的文件存储为image/jpeg 类型的实际图像,具体取决于我上传的图像类型。但是当使用应用程序上传时,我使用的是多部分,它使存储的文件成为multipart/form-data 类型。上传两种类型的图像 jpg/png 都给出了上面提到的类型。
[![在此处输入图片描述][3]][3]
【问题讨论】: