web-dev-qa-db-fra.com

Comment lire le contenu du fichier JSON téléchargé sur le stockage Google Cloud à l'aide du nœud js

Je télécharge manuellement le fichier JSON sur le stockage Google Cloud en créant un nouveau projet. Je peux lire les métadonnées d'un fichier mais je ne sais pas lire le contenu JSON.

Le code que j'ai utilisé pour lire les métadonnées est:

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

Quelqu'un peut-il me guider sur la façon de lire le contenu du fichier JSON?

7
Aravindh

J'ai utilisé le code suivant pour lire un fichier json depuis 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);
            });     

    };

Je lis à partir d'un flux et je concatère toutes les données du fichier dans la variable buf.

J'espère que ça aide.

MISE À JOUR

Pour lire plusieurs fichiers:

'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

Il existe une méthode pratique: "télécharger" pour télécharger un fichier en mémoire ou vers une destination locale. Vous pouvez utiliser la méthode de téléchargement comme suit:

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