新しいプロジェクトを作成して、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ファイルの内容を読み取る方法を教えてくれますか?
次のコードを使用して、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");
});
});
};
メモリまたはローカルの宛先にファイルをダウンロードするには、 '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);
});