我用过这个angular azure blob service用于在 azure 存储上上传 blob(图像)。 这是在 azure 存储上成功上传图像,但如果我们查看 azure 帐户,会发现一个使用所选图像名称而不是实际图像创建的文件夹。
upload() {
if (this.currentFile !== null) {
const baseUrl = this.blob.generateBlobUrl(
this.Config,
this.currentFile.name
);
console.log(baseUrl);
this.config = {
baseUrl: baseUrl,
sasToken: this.Config.sas,
blockSize:
this.currentFile.size > 1024 * 1024 * 32
? 1024 * 1024 * 4
: 1024 * 512, // OPTIONAL, default value is 1024 * 32
file: this.currentFile,
complete: () => {
console.log("Transfer completed !");
},
error: err => {
console.log("Error:", err);
},
progress: percent => {
console.log("Transfer completed =", percent);
// this.percent = percent;
}
};
console.log(this.config);
this.blob.upload(this.config);
}
}
这是上传函数,负责上传图片。请让我知道这里出了什么问题。 我将其与 Angular 8 一起使用。
这是Github link获取 NPM 源代码。
以下是我的配置对象,其中包含 SAS token 详细信息:
配置:UploadParams = {
SAS:
“https://demo.blob.core.windows.net/?sv=2019-02-02&ss=bfqt&srt=sco&sp=rwdlacup&se=2020-04-13T22:29:27Z&st=2020-04-13T14:29:27Z&spr= https,http&sig=PBJ62e8SU5%2FAef5Npmun5nvzZanb5UbVXqhJ17U1bGE%3D",
存储帐户:“演示”,
容器名称:“演示图像”
}
最佳答案
我认为问题出在 blob 的名称上。假设您在注释之一中正确复制了 blob 名称,则它会显示为:
https://demo.blob.core.windows.net/demo-images/download.jpghttps:/
如果您注意到,您的 blob 名称中有一个尾部斜杠 (/
),因此门户 UI(或任何其他存储资源管理器 UI)会将其视为虚拟文件夹,因此您将其视为一个文件夹。
请再次检查您的代码,特别是您如何设置 blob 的名称。它应该是https://demo.blob.core.windows.net/demo-images/download.jpg
。
更新
正如我怀疑的那样,您的配置对象中的 sas
参数存在问题。您正在传递 SAS URL 而不是 SAS token 。请将您的 sas
参数更改为:
?sv=2019-02-02&ss=bfqt&srt=sco&sp=rwdlacup&se=2020-04-13T22:29:27Z&st=2020-04-13T14:29:27Z&spr=https,http&sig=PBJ62e8SU5%2FAef5Npmun5nvzZanb5UbVXqhJ17U1bGE%3D
关于javascript - Azure存储: Uploading image on azure storage getting successful but creating folder instead of Image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61203953/