У меня есть маршрут Express, который подключается к моей корзине хранилища Google и загружает изображение. Я пытался придерживаться примеров кода Google, но go из буфера multer прямо в корзину.
Процесс, похоже, завершился без возврата en err. Однако файл появляется в корзине с размером 0Б. Кажется, метаданные приходят, а буфер изображений - нет ... ??
Кто-нибудь может увидеть, что я делаю неправильно?
Если возможно, я бы хотел получить это для работы без помощи дополнительных NPM пакетов помощи, таких как multer-cloud-storage и всех других вариантов.
const Multer = require("multer");
const multer = Multer({
storage: Multer.MemoryStorage,
fileSize: 5 * 1024 * 1024
});
const {Storage} = require('@google-cloud/storage');
const storage = new Storage({
projectId: 'project-name',
keyFile: '../config/project-name.json'
});
const bucket = storage.bucket('bucket-name');
app.post('/upload', multer.single('file'), function (req, res) {
const blob = bucket.file(req.file.originalname);
const blobStream = blob.createWriteStream({
metadata: {
contentType: req.file.mimetype
},
resumable: false
});
blobStream.on('error', err => {
next(err);
console.log(err);
return;
});
blobStream.on('finish', () => {
blob.makePublic().then(() => {
res.status(200).send(`Success!`);
})
})
blobStream.end();
})