如何解决为什么 Azure Blob 存储返回 201,但不上传?
在经历了很多痛苦和磨难之后,我终于能够在上传请求时从 Azure 博客存储 API 获得 2xx 状态代码。我不知道为什么这与 AWS S3 相比如此困难。
var blockId = btoa("Test");
$.ajax({
url: `https://${app}.blob.core.windows.net/blob/test.mp3?comp=block&blockid=${blockId}&${sas}`,type: 'PUT',contentType: 'audio/mpeg',data: audio.audioBlob,processData: false,headers: {
'x-ms-blob-type': 'BlockBlob','x-ms-date': new Date().toGMTString(),'x-ms-version': '2020-02-10'
}
});
我不确定这是否重要,但我使用以下 Chrome 命令绕过本地计算机的 CORS。
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
我确实尝试通过设置以下值在 Azure 门户中启用 CORS,但没有奏效。
我非常兴奋,收到了 2xx 状态代码,于是我跳到了 Azure 门户。不幸的是我的文件不在那里。我认为它可能是异步的,所以我等了 10 分钟。我发送的录音只有 5 秒长,所以我确定不会超过这个时间。
- 我检查了 Azure 中的监控图,所有数据都显示为 0。
- 我仔细检查了我的请求中的信息和共享访问签名,在我看来是正确的。
你知道这里发生了什么吗?
解决方法
你知道这里发生了什么吗?
我注意到您正在执行分块上传。本质上,您正在执行 Put Block
操作(而不是 Put Blob
操作)。 201
状态代码本质上是告诉您您上传的块(块)已成功到达存储空间。
接下来您需要做的是通过包含您上传的所有块的 ID 来调用 Put Block List
操作。这将告诉 Azure 存储将这些块拼接在一起并将它们保存为 blob。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。