我正在使用 Azure JS 库上传 blob。下面是我写的代码。
var speedSummary = blobService.createBlockBlobFromBrowserFile(container, fileList[i]["FileID"], selectedFiles[i], options, function (error, result, response) {
finishedOrError = true;
if (error) {
//Handle errors in upload
console.log(error);
alert("upload failed for " + selectedFiles[i].name);
} else {
//Handle success
//Trigger postback to save the file list to database.
uploadedFiles++;
triggerPostBack(uploadedFiles);
}
});
这段代码直到上周都工作正常,因为我测试了它。现在,它每次都会失败,并出现错误“无效的 HTML 文件对象”。
我尝试通过azure js库进行调试,找到了发生错误的地方。
if (!azureutil.isBrowser() ||
!browserFile ||
!browserFile.constructor ||
(!azureutil.isIE() && !browserFile.constructor.name) ||
(!azureutil.isIE() && browserFile.constructor.name !== 'File' && browserFile.constructor.name !== 'Blob') ||
!azureutil.objectIsInt(browserFile.size)) {
return fail(new ArgumentError('type', 'Invalid HTML File object.'));
} else {
callback();
return true;
}
由于某种原因,这个条件总是失败。我尝试禁用此条件,然后在 azure js 库的后面部分中,我在分块过程中收到另一个错误,指出“切片不是函数”。
我不知道为什么这段代码突然失败,因为它直到周末都工作正常。我检查了文件列表,它们似乎是具有所有相关属性的正确文件对象。
最佳答案
显然,它与 azure js 库无关。实际文件对象是新 json 对象的一部分,其中包含其他属性,例如文件的完整路径。更改以下行以获取实际的 HTML 文件对象。
var speedSummary = blobService.createBlockBlobFromBrowserFile(container, fileList[i]["FileID"], selectedFiles[i].fileObject, options, function (error, result, response)
关于javascript - Blob 上传到 Azure 失败并出现 "Invalid HTML File Object"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52035618/