Проблемы с загрузкой файла в облачное хранилище Google - PullRequest
1 голос
/ 09 января 2020

У меня возникла проблема при попытке загрузить файл в Google Cloud Storage. Я получаю ошибку ENOENT: no such file or directory, stat 'file.extension'. Моя текущая реализация выглядит следующим образом:

const { Storage } = require('@google-cloud/storage');

const storage = new Storage();
const bucketName = 'bucket-name';

exports.uploadFileGCP = async (file, anchorID) => {
    const { filename, mimetype, encoding, createReadStream } = await file
    await storage.bucket(bucketName).upload(filename, {
        destination: `anchor/${anchorID}/` + filename,
        predefinedAcl: 'publicRead',
        metadata: {
            cacheControl: 'no-cache'
        },
    });

    console.log(`${filename} uploaded to ${bucketName}`)
}

Просматривая документацию, выясняется, что для filename в части upload требуется путь к файлу на локальном компьютере. Я не могу найти решение, в котором я могу загрузить файл без использования локального пути. Есть ли способ сделать это?

Это код для моего распознавателя GraphQL, через который проходит файл:

async function uploadFile(parent, args, ctx, info) {

    const google = await uploadFileGCP(args.file, args.anchorID);
    console.log(google)
    ...
}

Я чувствую, что упускаю что-то очевидное, но могу не совсем понимаю, что происходит. Спасибо за любую помощь по этому вопросу.

1 Ответ

0 голосов
/ 21 января 2020

как сказал @Kolban, вы должны использовать createWriteStream:

bucketName.file(filename).createWriteStream({resumable: false, gzip: true})
...