我正在尝试从Node.js上传图像到Firebase-storage,我遵循了下面的说明,在他们的文档中给出了firebase,所有的运行都很好,但是当图像在存储中时,大小是0字节,你看不到预览。
这是我的代码:
const uploadImageToStorage = (file,filename) => {
let prom = new Promise((resolve, reject) => {
if (!file) {
reject('No image file');
}
let newFileName = `${file.originalname}_${Date.now()}`;
let fileUpload = bucket.file(newFileName);
const blobStream = fileUpload.createWriteStream({
metadata: {
contentType: file.mimetype
}
});
blobStream.on('error', (error) => {
reject('Something is wrong! Unable to upload at the moment.');
});
blobStream.on('finish', () => {
// The public URL can be used to directly access the file via HTTP.
const url = `https://storage.googleapis.com/${bucket.name}/${fileUpload.name}`;
resolve(url);
});
blobStream.end(file.buffer);
});
return prom;
}这是我的app.post方法:
app.post('/Upload_img',multer.single("file"), function (req, res) {
console.log("Upload Imagennes");
let url = "";
let file= req.file;
if (file) {
uploadImageToStorage(file,file.name).then((success) => {
url = success;
res.status(200).send(url);
}).catch((error) => {
console.error(error);
});
}
}存储:

发布于 2018-12-22 05:25:44
我用你的uploadImageToStorage函数上传了一个png文件。我直接调用它,而不是使用multer
(async () => {
const buffer = fs.readFileSync('./android.png');
const file = {
originalname: 'android.png',
mimetype: 'image/png',
buffer,
}
try {
return await uploadImageToStorage(file, file.originalname);
} catch (err) {
console.log(err);
}
})();这与预期的一样。所以问题可能出在你的Express.js代码或者multer中。尝试在服务器代码中记录req.file和req.file.buffer,可以看到它具有预期的数据。
https://stackoverflow.com/questions/53889366
复制相似问题