为了将使用 HTML5/Javascript 的文件直接上传到 blob 存储中,我关注了 Gaurav Mantri 的这篇精彩文章。
但是我发现在上传部分他的这部分代码失败并出现 403 错误。
有趣的是,这是随机发生的。有时上传确实有效,并且一切都成功完成,但大多数时候它会因 403 错误而失败。
需要注意的一件事:我希望很快将 CORS 支持添加到 Azure,但是暂时我正在使用 Chrome(带有chrome.exe --disable-web-security选项)来解决这个问题。
PUT https://mystorage.blob.core.windows.net/asset-38569007-3316-4350 …Giv17ye4bocVWDbA/EQ+riNiG3wEGrFucbd1BKI9E=&comp=block&blockid=YmxvY2stMA==
403(服务器无法验证请求。确保 Authorization 标头的值正确形成,包括签名。)
$.ajax({
url: uri,
type: "PUT",
data: requestData,
processData: false,
beforeSend: function(xhr) {
xhr.setRequestHeader('x-ms-blob-type', 'BlockBlob');
xhr.setRequestHeader('Content-Length', requestData.length);
},
success: function (data, status) {
console.log(data);
console.log(status);
bytesUploaded += requestData.length;
var percentComplete = ((parseFloat(bytesUploaded) / parseFloat(selectedFile.size)) * 100).toFixed(2);
$("#fileUploadProgress").text(percentComplete + " %");
uploadFileInBlocks();
},
error: function(xhr, desc, err) {
console.log(desc);
console.log(err);
}
});
在实际开始上传部分之前,我在 Azure 中创建资产/定位器/文件后延迟了 30 秒,以便为传播定位器留出时间。
对我可能遗漏的内容有什么建议吗?