Облачное хранилище Google загружает 0 байт на Node.js
Я использую Google-Cloud-Storage. Этот код сохранит объект в корзине, но она просто пуста. Он показывает размер 0 байт
req.file = req.files.file;
const bucketName = req.body.bucketName || DEFAULT_BUCKET_NAME;
const bucket = storage.bucket(bucketName);
const gcsFileName = `${Date.now()}-${req.file.name}`;
const file = bucket.file(gcsFileName);
const stream = file.createWriteStream({
// resumable: false,
// gzip: true,
metadata: {
contentType: req.file.mimetype,
},
});
stream.on('error', (err) => {
req.file.cloudStorageError = err;
next(err)
});
stream.on('finish', () => {
console.log('image uploaded succesfully')
req.file.cloudStorageObject = gcsFileName;
return file.makePublic()
.then(() => {
req.file.gcsUrl = gcsHelpers.getPublicUrl(bucketName, gcsFileName);
next()
});
});
stream.end(req.files.file.buffer);
1 ответ
Просматривая комментарии, было обнаружено, что проблема заключалась в том, что при записи в GCS не передавались ожидаемые данные, в результате чего ничего не записывалось. В исходном коде у нас было:
stream.end(req.files.file.buffer);
который закрыл бы файл после записи данных в переменную. Однако идентификатор переменной был неправильным, и нужно было закодировать следующее:
stream.end(req.files.file.data);