web-dev-qa-db-ja.com

ノードjsを使用してGoogleクラウドストレージにアップロードされたJSONファイルのコンテンツを読み取る方法

新しいプロジェクトを作成して、JSONファイルを手動でGoogle Cloud Storageにアップロードします。ファイルのメタデータを読み取ることはできますが、JSONコンテンツを読み取る方法がわかりません。

メタデータを読み取るために使用したコードは次のとおりです。

var Storage = require('@google-cloud/storage');
const storage = Storage({
    keyFilename: 'service-account-file-path',
    projectId: 'project-id'
});
storage
    .bucket('project-name')
    .file('file-name')
    .getMetadata()
    .then(results => {
        console.log("results is", results[0])
    })
    .catch(err => {
        console.error('ERROR:', err);
    });

誰かがJSONファイルの内容を読み取る方法を教えてくれますか?

7
Aravindh

次のコードを使用して、Cloud Storageからjsonファイルを読み取りました。

    'use strict';
    const Storage = require('@google-cloud/storage');
    const storage = Storage();
    exports.readFile = (req, res) => {
            console.log('Reading File');
            var archivo = storage.bucket('your-bucket').file('your-JSON-file').createReadStream();
            console.log('Concat Data');
            var  buf = '';
            archivo.on('data', function(d) {
              buf += d;
            }).on('end', function() {
              console.log(buf);
              console.log("End");
              res.send(buf);
            });     

    };

ストリームから読み取り、ファイル内のすべてのデータをbuf変数に連結しています。

それが役に立てば幸い。

[〜#〜]更新[〜#〜]

複数のファイルを読み取るには:

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

async function listFiles() {
        const bucketName = 'your-bucket'
        console.log('Listing objects in a Bucket');
        const [files] = await storage.bucket(bucketName).getFiles();
        files.forEach(file => {
            console.log('Reading: '+file.name);
            var archivo = file.createReadStream();
            console.log('Concat Data');
            var  buf = '';
            archivo.on('data', function(d) {
                buf += d;
            }).on('end', function() {
                console.log(buf);
                console.log("End");
            });    
        });
};
10
F10

メモリまたはローカルの宛先にファイルをダウンロードするには、 'download'という便利な方法があります。以下のダウンロード方法を使用できます。

const bucketName='bucket name here';
const fileName='file name here';
const storage = new Storage.Storage();
const file = storage.bucket(bucketName).file(fileName);

file.download(function(err, contents) {
     console.log("file err: "+err);  
     console.log("file data: "+contents);   
}); 
4
Pratap Singh