首页 文章

将blob网址上传到azure存储?

提问于
浏览
0

我有一个blob的URL,我试图上传到azure存储,似乎没有一个明显的方法这样做,因为没有一个API处理直接上传blob网址 .

我正在尝试做这样的事情:

blobService.createBlockBlobFromLocalFile('taskcontainer', 'myfile.png', blobUrl, (error, result, response) => {

            });

哪个不起作用,我试图找到方法将blob url读取为可读流并上传但是还没有走得太远 .

我基本上有一个用户使用react-dropzone选择的文件,它为我提供了一个指向本地文件的blob url(看起来像这样:blob:http://localhost:3000/cd8ba70e-5877-4112-8131-91c594be8f1e) . 我的目标是现在将该blob url上传到azure容器 .

Firebase存储有'put'功能,允许您从网址上传blob:https://firebase.google.com/docs/storage/web/upload-files

这是我得到的最接近的:

var blobUrl = acceptedFiles[0].preview;

            var xhr = new XMLHttpRequest();
            xhr.open("GET", blobUrl);
            xhr.responseType = "text";//force the HTTP response, response-type header to be blob
            xhr.onload = function () {
                const Stream = require('stream')
                const readable = new Stream.Readable()

                readable.push(xhr.responseText);
                readable.push(null);

                blobService.createBlockBlobFromStream('taskcontainer', 'myblob.png', readable, xhr.responseText.length, (error, result, response)=>{
                    var ok = 0;
                })
            }
            xhr.send();

该文件(或其中的一部分?)似乎上传但最终结果是文件类型丢失,我无法查看上传的png ..

1 回答

  • 0

    您可以尝试以下方法

    var azure = require('azure-storage');
    var blobService = azure.createBlobService('', '');
    
    blobService.createBlockBlobFromLocalFile('nodecontainer', 'AzureDC', 'azure_center.png', function(error, result, response) {
      publicAccessLevel: 'blob'
    }, function(error, result, response) {
      if (!error) {
        console.log(response);
      } else {
        console.log(error);
      }
    });
    

    EDIT

    检查此 code snippet 以将blob上载到azure存储

相关问题