How to read content of JSON file uploaded to google cloud storage using node js

孤人 提交于 2019-12-21 10:50:08

问题


I manually upload the JSON file to google cloud storage by creating a new project. I able to read the metadata for a file but I don't know how to read the JSON content

The code I used to read the metadata is 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); });

someone can guide me to the way to read the JSON file content


回答1:


I've used the following code to read a json file from Cloud Storage:

    '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);
            });     

    };

I'm reading from a stream and concat all the data within the file to the buf variable.

Hope it helps.

UPDATE

To read multiple files:

'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");
            });    
        });
};



回答2:


There exists a convenient method:'download' to download a file into memory or to a local destination. You may use download method as follows:

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);   
}); 


来源:https://stackoverflow.com/questions/51970205/how-to-read-content-of-json-file-uploaded-to-google-cloud-storage-using-node-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!