Quoc Van Tang
Quoc Van Tang

Reputation: 1193

Upload JSON string to Google Cloud Storage without a file

My case is when I receive data from some other source as a JSON string, then I want to upload this string to Google Cloud Storage without writing this string to a local file and upload this file. Is there any way to do this. Thank you. Look like this code below

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

so I expected the Google Cloud Storage will have a file test.json with content from the jsonString

Upvotes: 21

Views: 15725

Answers (3)

Kevin Danikowski
Kevin Danikowski

Reputation: 5176

expanding on @ch_mike's answer

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

Upvotes: 4

Joshua Abad
Joshua Abad

Reputation: 23

In case some one is looking for the snippet of the answer here it is using the file.save(). Please do note that the data should be 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() {});
};

Upvotes: 2

ch_mike
ch_mike

Reputation: 1576

It looks like this scenario has already been addressed in this other question.

Both answers look good, but it will probably be easier to use the file.save() method (second answer).You can find the description of this method and yet another example here.

Hope this helps.

Upvotes: 7

Related Questions