我正在使用Azure Storage Nodejs
,我需要做的是将图像从一个blob复制到另一个blob
首先,我尝试getBlobToFile
将图像放在磁盘中的临时位置,然后从该临时位置获取createBlockBlobFromFile
。这种方法完成了任务,但出于某种原因,在10%的情况下它并没有完全复制
我试图使用getBlobToText
并将其结果放入createBlockBlobFromText
,同时尝试将需要blob的选项放入图像容器中。该方法完全失败,复制后图像甚至没有打开
也许有一种方法可以复制blob文件并将其粘贴到其他blobl中,但我没有找到该方法。
我还能做什么?
答案 0 :(得分:3)
我不确定你的特定拷贝错误是什么,但是......对于getLocalBlobToFile()
,你实际上是将blob内容从blob存储移动到你的VM(或本地机器),然后用createBlockBlobFromLocalFile()
您将整个内容推回到blob存储,这导致两次物理网络移动。
Azure存储系统支持blob-copy作为第一类操作。虽然它可以通过REST API调用获得,但它也包含在您使用的相同SDK中,方法BlobService.startCopyBlob()
(源代码here)。这将指示存储完全在存储系统内启动异步复制操作(意味着无需下载+上传)。您将能够设置源和目标,设置超时等。(所有参数都在源代码中完整记录)。
答案 1 :(得分:0)
虽然方法是正确的,但已接受答案中的链接已被破坏:方法startCopyBlob
在此处记录https://docs.microsoft.com/en-us/javascript/api/azure-storage/BlobService?view=azure-node-latest#azure_storage_BlobService_createBlockBlobFromLocalFile