【问题标题】:Node.js - Getting empty files when unzipping and uploading to GCSNode.js - 解压缩并上传到 GCS 时获取空文件
【发布时间】:2019-05-01 10:46:41
【问题描述】:

我正在尝试创建一个服务,该服务获取一个 zip 文件,将其解压缩并将其内容上传到 Google Cloud Storage 存储桶。 解压缩部分似乎运行良好,但在我的 GCS 存储桶中,所有文件似乎都是空的。 我正在使用以下代码:

app.post('/fileupload', function(req, res) {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {

    const uuid = uuidv4();

    console.log(files.filetoupload.path); // temporary path to zip

    fs.createReadStream(files.filetoupload.path)
        .pipe(unzip.Parse())
        .on('entry', function (entry) {
            var fileName = entry.path;
            var type = entry.type; // 'Directory' or 'File'
            var size = entry.size;

            const gcsname = uuid + '/' + fileName;
            const blob = bucket.file(gcsname);

            const blobStream = blob.createWriteStream(entry.path);
            blobStream.on('error', (err) => {
                console.log(err);
            });

            blobStream.on('finish', () => {
                const publicUrl = format(`https://storage.googleapis.com/${bucket.name}/${blob.name}`);
                console.log(publicUrl); // file on GCS
            });

            blobStream.end(entry.buffer);

        });

    });
});

我对 Node.js 很陌生,所以我可能忽略了一些东西——我在文档上花了一些时间,但我不太知道该怎么做。 有人可以建议可能是什么问题吗?

【问题讨论】:

    标签: javascript node.js google-cloud-storage unzip


    【解决方案1】:

    fs.createWriteStream() 将文件路径作为参数,但 GCS createWriteStream() 采用 options

    根据documentation 中的示例,推荐的方法是:

    const stream = file.createWriteStream({
        metadata: {
          contentType: req.file.mimetype
        },
        resumable: false
      });
    

    代替:

    const blobStream = blob.createWriteStream(entry.path).

    【讨论】:

      【解决方案2】:

      检查你的缓冲区是否未定义。这可能是由于未指定的磁盘/内存存储导致缓冲区未定义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-26
        • 1970-01-01
        • 2013-09-27
        • 1970-01-01
        相关资源
        最近更新 更多