我正在尝试将文件上传到Azure Blob存储。我正在后端接收它,但是我一直收到错误createBlobFromLocalFile should be a non-empty string
,我正在接收文件,正如您在控制台输出中看到的那样,但是我不明白为什么我不能将其发送到Blob存储。已经尝试将第二个参数blob string
替换为req.file, req,file.path, req.file.destination + filename
,但无法获取将其存储在blob中的文件。感谢您的帮助!
app.js
app.post("/api/fileupload", checkAuth, upload, (req, res, next) => {
console.log("req.file below");
console.log(req.file);
blobService.createBlockBlobFromLocalFile('testcontainer', req.file, "image.png", function (error, result, response) {
console.log(response);
if (!error) {
// file uploaded
}
});
});
控制台输出
req.file below
{ fieldname: 'file',
originalname: 'blob',
encoding: '7bit',
mimetype: 'image/jpeg',
destination: 'public/uploads/',
filename: '18af517e9a94b2bdab02c7169b8b88a7',
path: 'public\\uploads\\18af517e9a94b2bdab02c7169b8b88a7',
size: 39367 }
TypeError: Parameter blob for function _createBlobFromLocalFile should be a non-empty string
基于documentation
,它应该是本地文件的路径(字符串值),而您正在传递对象作为此参数的值。
但是,如果您使用documentation
变量,它仍然无法工作,因为它告诉您本地计算机上文件的路径,而不是运行Node.js代码的服务器上的文件的路径。您将需要指定服务器上文件的路径。
[几天前我回答了一个问题,其中file.path
包用于解析提取文件内容的请求。尽管答案是使用较新版本的SDK,但您可以使用它来查看如何识别服务器上的本地文件路径。您可能会发现它很有用:formidable
。