0

ファイルをアップロードして、そのファイルを Google ドライブに渡したい! Busboy と Node の Google ドライブ クライアントを使用しています。

busboy からのファイルストリームを google drive API に渡したい!

一時ファイルを作成してから fs.createReadStream を作成してその一時ファイルを読み取るのは嫌です。IO操作なしで、純粋にメモリを使用して実行したいのですが、

それを行う方法はありますか?

busboy.on('file', function(fieldname, file, filename, encoding, mimetype){
    console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype);

    file.on('data', function(data){
        //Need to store all the data here and pass it back at file.on('end')            
    });

    file.on('end', function(){
        drive.files.insert({
            resource: {
                title: '123.jpg',
                mimeType: 'image/jpeg',
                parents: [{
                    kind: "drive#fileLink",
                    id: "0B0qG802x7G4bM3gyUll6MmVpR0k"
                }]
            },
            media: {
                mimeType: 'image/jpeg',
                body: //how to pass stream from busboy to here???
            }
        }, function(err, data){

        });
    })
})
4

1 に答える 1

1

googleapisモジュールのドキュメントによるとbody、読み取り可能なストリームまたは文字列に設定できます。したがって、コードは次のようになります。

busboy.on('file', function(fieldname, file, filename, encoding, mimetype){
  console.log('File [' + fieldname + ']: filename: ' + filename + ', encoding: ' + encoding + ', mimetype: ' + mimetype);

  drive.files.insert({
    resource: {
      title: '123.jpg',
      mimeType: 'image/jpeg',
      parents: [{
        kind: "drive#fileLink",
        id: "0B0qG802x7G4bM3gyUll6MmVpR0k"
      }]
    },
    media: {
      mimeType: 'image/jpeg',
      body: file
    }
  }, function(err, data){

  });
})
于 2014-11-11T07:25:23.070 に答える