【问题标题】:Upload JSON string to Google Cloud Storage without a file将 JSON 字符串上传到没有文件的 Google Cloud Storage
【发布时间】:2019-01-11 00:56:03
【问题描述】:

我的情况是,当我从其他来源接收数据作为 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 的内容

【问题讨论】:

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


    【解决方案1】:

    看起来这种情况已经在另一个question 中得到解决。

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

    希望这会有所帮助。

    【讨论】:

    • 不错。我试过了,它有效。感谢您的回复
    • 有帮助!谢谢
    • 你能分享一些代码sn-p吗?我无法使其适用于从休息 api 中提取的 JSON 数据。
    【解决方案2】:

    我认为你只需要 JSON.stringify() 你的对象

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

    【讨论】:

      【解决方案3】:

      如果有人在这里寻找答案的 sn-p,它正在使用 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() {});
      };
      

      【讨论】:

        【解决方案4】:

        扩展@ch_mike 的回答

        const { Storage } = require('@google-cloud/storage')
        const storage = new Storage()
        const bucket = storage.bucket(bucketName)
        
        const saveJsonFile = (data) => {
           const timestamp = new Date().getTime()
           const fileName = `${timestamp}.json`
           const file = bucket.file(fileName)
           const contents = JSON.stringify(data)
           return file.save(contents)
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-23
          • 1970-01-01
          • 1970-01-01
          • 2020-01-16
          • 2020-08-28
          • 2019-06-04
          • 1970-01-01
          相关资源
          最近更新 更多