【发布时间】:2021-06-16 04:46:27
【问题描述】:
我有一堆 VHD 文件存储在私人服务器上,可以通过 url 访问。
我正在尝试使用 azure javascript npm 库将这些 vhd 文件直接上传到我的 azure 存储帐户。 vhd 必须作为页面 blob 上传。我尝试使用 pageblobClient 的方法 uploadPagesFromURL() 但没有成功。我的代码大致是这样的:
async function uploadVHD(accessToken, srcUrl)
{
try {
// Get credentials from accessToken
const creds = new StorageSharedKeyCredential(storageAccount.name, storageAccount.key);
// Get blobServiceClient
const blobServiceClient = new BlobServiceClient(`https://${storageAccount.name}.blob.core.windows.net`, creds);
// Create Container
const containerClient = blobServiceClient.getContainerClient("vhd-images");
await containerClient.createIfNotExists();
const src = srcUrl.replace('https://', 'https://username:password@');
// Upload to blob storage
const pageBlobClient = containerClient.getPageBlobClient("Test.vhd");
// Get fileSize of vhd
const fileSize = (await axiosRequest(src, { method: "HEAD" })).headers["content-length"];
const uploadResponse = await pageBlobClient.uploadPagesFromURL(src, 0, 0, fileSize);
return uploadResponse;
} catch (error) {
return error;
}
});
【问题讨论】:
-
uploadPagesFromURL中的 url 是源 blob 的特定 URL。这意味着如果它是公开的,则 url 看起来像https://myaccount.blob.core.windows.net/mycontainer/myblob,如果它不是公开的,则 url 看起来像https://myaccount.blob.core.windows.net/mycontainer/myblob?sas-token。是否要上传与存储无关的url,例如i.stack.imgur.com/sc74e.png? -
嘿@Pamela Peng 你附上的图片,当我查看它时是空白的,但我猜我理解你正确。是的,我要使用的 url 独立于存储,并使用用户名和密码的基本身份验证。
标签: javascript typescript azure azure-blob-storage