无需文件即可将JSON字符串上传到Google Cloud Storage

时间:2018-08-03 07:28:36

标签: javascript json node.js google-cloud-storage storage

我的情况是,当我从其他来源接收数据作为JSON字符串时,我想将此字符串上传到Google Cloud Storage,而无需将此字符串写入本地文件并上传。有什么办法可以做到这一点。谢谢。 看起来像下面的代码

storage
  .bucket(bucketName)
  .upload(jsonString, { destination: 'folder/test.json' })
  .then(() => {
    console.log('success');
  })
  .catch((err) => {
    console.error('ERROR:', err);
  });

所以我希望Google Cloud Storage将有一个test.json文件,其内容来自jsonString

3 个答案:

答案 0 :(得分:1)

看来其他question中已经解决了这种情况。

两个答案看起来都不错,但是使用file.save()方法(第二个答案)可能会更容易。您可以找到此方法的说明以及另一个示例here

希望这会有所帮助。

答案 1 :(得分:0)

我认为您只需要对对象进行JSON.stringify()

storage
.bucket(bucketName)
.upload(JSON.stringify(jsonString), { destination: 'folder/test.json' })
.then(() => {
  console.log('success');
})
.catch((err) => {
  console.error('ERROR:', err);
});

答案 2 :(得分:0)

如果有人在这里寻找答案的片段,则使用file.save()。请注意,数据应为stringfy。

const storage = new Storage();

exports.entry_point = (event, context) => {
  var data = Buffer.from(event.data, 'base64').toString();
  data = transform(data)
  var datetime = new Date().toISOString()
  var bucketName =  storage.bucket('your_filename')
  var fileName = bucketName.file(`date-${datetime}.json`)
  fileName.save(data, function(err) {
  if (!err) {
    console.log(`Successfully uploaded ${fileName}`)
  }});

  //-
  // If the callback is omitted, we'll return a Promise.
  //-
  fileName.save(data).then(function() {});
};