我有一个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 回答
您可以尝试以下方法
EDIT
检查此 code snippet 以将blob上载到azure存储