Reputation: 498
Is there a better option for uploading a file?
In my case I need to upload a lot of small files (pdf or text) and I have to decide the best option, but anyway are there differences between these two methods?
Here two examples taken directly from the documentation
Save method: (Docs)
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const myBucket = storage.bucket('my-bucket');
const file = myBucket.file('my-file');
const contents = 'This is the contents of the file.';
file.save(contents, function(err) {
if (!err) {
// File written successfully.
}
});
//-
// If the callback is omitted, we'll return a Promise.
//-
file.save(contents).then(function() {});
Upload method: (Docs)
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('albums');
//-
// Upload a file from a local path.
//-
bucket.upload('/local/path/image.png', function(err, file, apiResponse) {
// Your bucket now contains:
// - "image.png" (with the contents of `/local/path/image.png')
// `file` is an instance of a File object that refers to your new file.
});
Upvotes: 3
Views: 1092
Reputation: 121
At its core, both of these functions do the same thing. They upload a file to a bucket. One is just a function on bucket
and the other a function on file
. They both end up calling file.createWriteStream
, so they have the same performance as well.
The functions behave differently in terms of upload type. file.save
will default to a resumable upload unless you specify otherwise (you can set the resumable
boolean on SaveOptions
to false). bucket.upload
will perform a multipart upload if the file is smaller than 5MB and a resumable upload otherwise. For bucket.upload
, you can force a resumable or multipart upload by modifying the resumable
boolean on UploadOptions
.
Note that in the upcoming major version release (https://github.com/googleapis/nodejs-storage/pull/1876), this behavior will be unified. Both functions will default to a resumable upload regardless of file size. The behavior will be the same.
For small files, multipart uploads are recommended.
Upvotes: 5