我有以下从前端类型scipt代码上传文件到Azure blob存储的工作代码。由于网络或任何其他问题,我必须捕捉与上传失败场景相关的错误。我们怎样才能在前端发现这些错误?假设我正在上传一个1GB大小的文件,在上传过程中,如果有任何网络问题,那么一旦网络可用,它会恢复还是从一开始重新开始上传?
const blobServiceClient = new BlobServiceClient(`https://${STORAGE_ACCOUNT_NAME}.blob.core.windows.net`,credentials);
const containerClient = blobServiceClient.getContainerClient(containerName);
const fileName = path.basename(localFilePath);
const blobClient = containerClient.getBlobClient("folder1/"+fileName);
//const blobClient = containerClient.getBlobClient(fileName);
const blockBlobClient = blobClient.getBlockBlobClient();
blockBlobClient.uploadFile(localFilePath);
由于网络或任何其他问题。我们怎样才能抓住前面的错误终止
您可以简单地将代码包装在try/catch块中。每当存储端发生错误时,都会返回一个错误对象。该错误对象将包含一个名为statusCode
的属性。您可以检查状态代码以确定是否应该重试该操作。例如,如果状态代码>=400且小于500,则不应重试该操作。任何状态代码>=500可以重试。
假设我上传的文件大小为1GB,在上传过程中有任何网络问题,那么一旦网络可用,它会恢复或上传将从开始重新开始?
SDK将不会恢复失败的上传。它将从头开始。维护上传状态将是您的应用程序的责任。