Облачное хранилище 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);
Другие вопросы по тегам