我会将音频文件上传到Azure Blob存储。 首先,我发出一个http请求以获取文件的URL。
然后,我将其“直接”保存到azure blob存储中,而无需将其存储在服务器中,然后上传。
这是我的代码:
request
.get(url, {
auth: {
bearer: token
}
})
.on("response", async function(response) {
const res = await blobService.createAppendBlobFromStream(
"recordings", // container name
"record.wav",
response, // should be stream
177777, // stream length
function(err, res) {
try {
console.log(res);
} catch (err) {
console.log(err);
}
}
);
});
实际上,当我将文件上传到Blob存储中并检查数据库时,我得到了一个空文件,里面没有数据,我认为我发送的数据流不正确。
我期望的是将音频文件保存到blob存储中,其中包含我从get
请求中获得的数据
我还应该指定流的长度,但是我不知道如何得到它,所以我放了一个随机数,但是它应该是正确的流长度。我已经检查过response
对象,但没有找到该信息。
答案 0 :(得分:0)
我认为您不能直接上传文件,因此首先要在Blob存储中创建一个文件夹,然后再创建一个文件。 读取所选文件数据,然后使用文件流或其他方法将其写入创建的文件中。
这是上传文件代码,
app.post('/upload',function(req,res){
if(req.files.fileInput){
var file = req.files.fileInput,
name = file.name,
type = file.mimetype;
var uploadpath = __dirname + '/uploads/' + name;
file.mv(uploadpath,function(err){
if(err){res.send("Error Occured!")}
else {res.send('Done! Uploading files')}
});
}
else {
res.send("No File selected !");
res.end();
};
})