将blob网址上传到azure存储空间?

时间:2018-01-28 05:30:07

标签: javascript azure blob

我有一个blob的URL,我试图上传到azure存储,但似乎并不是一个明显的方法,因为没有一个API可以直接处理blob url。

我试图做这样的事情:

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

            });

哪个不起作用,我试图找到方法将blob网址读取为可读流并上传但是还没有得到很远。

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

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 :(得分: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);
  }
});

修改

选中 code snippet ,将blob上传到azure存储空间