Class File_2 (7.13.0)

A File object is created from your Bucket object using .

Inheritance

ServiceObject<File, FileMetadata> > File_2

Package

@google-cloud/storage

Constructors

(constructor)(bucket, name, options)

constructor(bucket: Bucket, name: string, options?: FileOptions);

Constructs a file object.

Parameters
Name Description
bucket Bucket

The Bucket instance this file is attached to.

name string

The name of the remote file.

options FileOptions

Configuration options.

Example

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const myBucket = storage.bucket('my-bucket');

const file = myBucket.file('my-file');

Properties

acl

acl: Acl;

bucket

bucket: Bucket;

cloudStorageURI

get cloudStorageURI(): URL;

The object's Cloud Storage URI (gs://)

Example
ts
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('my-bucket');
const file = bucket.file('image.png');

// `gs://my-bucket/image.png`
const href = file.cloudStorageURI.href;

crc32cGenerator

crc32cGenerator: CRC32CValidatorGenerator;

generation

generation?: number;

instancePreconditionOpts

instancePreconditionOpts?: PreconditionOptions;

kmsKeyName

kmsKeyName?: string;

name

name: string;

parent

parent: Bucket;

signer

signer?: URLSigner;

storage

storage: Storage;

userProject

userProject?: string;

Methods

copy(destination, options)

copy(destination: string | Bucket | File, options?: CopyOptions): Promise<CopyResponse>;
Parameters
Name Description
destination string | Bucket | File
options CopyOptions
Returns
Type Description
Promise<CopyResponse>

copy(destination, callback)

copy(destination: string | Bucket | File, callback: CopyCallback): void;
Parameters
Name Description
destination string | Bucket | File
callback CopyCallback
Returns
Type Description
void

copy(destination, options, callback)

copy(destination: string | Bucket | File, options: CopyOptions, callback: CopyCallback): void;
Parameters
Name Description
destination string | Bucket | File
options CopyOptions
callback CopyCallback
Returns
Type Description
void

createReadStream(options)

createReadStream(options?: CreateReadStreamOptions): Readable;

Create a readable stream to read the contents of the remote file. It can be piped to a writable stream or listened to for 'data' events to read a file's contents.

In the unlikely event there is a mismatch between what you downloaded and the version in your Bucket, your error handler will receive an error with code "CONTENT_DOWNLOAD_MISMATCH". If you receive this error, the best recourse is to try downloading the file again.

NOTE: Readable streams will emit the end event when the file is fully downloaded.

Parameter
Name Description
options CreateReadStreamOptions

Configuration options.

Returns
Type Description
Readable

{ReadableStream}

Example

//-
// 

Downloading a File

// // The example below demonstrates how we can reference a remote file, then // pipe its contents to a local file. This is effectively creating a local // backup of your remote data. //- const {Storage} = require('@google-cloud/storage'); const storage = new Storage(); const bucket = storage.bucket('my-bucket'); const fs = require('fs'); const remoteFile = bucket.file('image.png'); const localFilename = '/Users/stephen/Photos/image.png'; remoteFile.createReadStream() .on('error', function(err) {}) .on('response', function(response) { // Server connected and responded with the specified status and headers. }) .on('end', function() { // The file is fully downloaded. }) .pipe(fs.createWriteStream(localFilename)); //- // To limit the downloaded data to only a byte range, pass an options // object. //- const logFile = myBucket.file('access_log'); logFile.createReadStream({ start: 10000, end: 20000 }) .on('error', function(err) {}) .pipe(fs.createWriteStream('/Users/stephen/logfile.txt')); //- // To read a tail byte range, specify only `options.end` as a negative // number. //- const logFile = myBucket.file('access_log'); logFile.createReadStream({ end: -100 }) .on('error', function(err) {}) .pipe(fs.createWriteStream('/Users/stephen/logfile.txt'));

createResumableUpload(options)

createResumableUpload(options?: CreateResumableUploadOptions): Promise<CreateResumableUploadResponse>;
Parameter
Name Description
options CreateResumableUploadOptions
Returns
Type Description
Promise<CreateResumableUploadResponse>

createResumableUpload(options, callback)

createResumableUpload(options: CreateResumableUploadOptions, callback: CreateResumableUploadCallback): void;
Parameters
Name Description
options CreateResumableUploadOptions
callback CreateResumableUploadCallback
Returns
Type Description
void

createResumableUpload(callback)

createResumableUpload(callback: CreateResumableUploadCallback): void;
Parameter
Name Description
callback CreateResumableUploadCallback
Returns
Type Description
void

createWriteStream(options)

createWriteStream(options?: CreateWriteStreamOptions): Writable;

Create a writable stream to overwrite the contents of the file in your bucket.

A File object can also be used to create files for the first time.

Resumable uploads are automatically enabled and must be shut off explicitly by setting options.resumable to false.

There is some overhead when using a resumable upload that can cause noticeable performance degradation while uploading a series of small files. When uploading files less than 10MB, it is recommended that the resumable feature is disabled.

NOTE: Writable streams will emit the finish event when the file is fully uploaded.

See See

Parameter
Name Description
options CreateWriteStreamOptions

Configuration options.

Returns
Type Description
Writable

{WritableStream}

Example

const fs = require('fs');
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const myBucket = storage.bucket('my-bucket');

const file = myBucket.file('my-file');

//-
// 

Uploading a File

// // Now, consider a case where we want to upload a file to your bucket. You // have the option of using {@link Bucket#upload}, but that is just // a convenience method which will do the following. //- fs.createReadStream('/Users/stephen/Photos/birthday-at-the-zoo/panda.jpg') .pipe(file.createWriteStream()) .on('error', function(err) {}) .on('finish', function() { // The file upload is complete. }); //- //

Uploading a File with gzip compression

//- fs.createReadStream('/Users/stephen/site/index.html') .pipe(file.createWriteStream({ gzip: true })) .on('error', function(err) {}) .on('finish', function() { // The file upload is complete. }); //- // Downloading the file with `createReadStream` will automatically decode // the file. //- //- //

Uploading a File with Metadata

// // One last case you may run into is when you want to upload a file to your // bucket and set its metadata at the same time. Like above, you can use // {@link Bucket#upload} to do this, which is just a wrapper around // the following. //- fs.createReadStream('/Users/stephen/Photos/birthday-at-the-zoo/panda.jpg') .pipe(file.createWriteStream({ metadata: { contentType: 'image/jpeg', metadata: { custom: 'metadata' } } })) .on('error', function(err) {}) .on('finish', function() { // The file upload is complete. });

//- //

Continuing a Resumable Upload

// // One can capture a uri from a resumable upload to reuse later. // Additionally, for validation, one can also capture and pass crc32c. //- let uri: string | undefined = undefined; let resumeCRC32C: string | undefined = undefined;

fs.createWriteStream() .on('uri', link => {uri = link}) .on('crc32', crc32c => {resumeCRC32C = crc32c});

// later... fs.createWriteStream({uri, resumeCRC32C});

delete(options)

delete(options?: DeleteOptions): Promise<[r.Response]>;

Delete the object.

Parameter
Name Description
options DeleteOptions
Returns
Type Description
Promise<[Response]>

delete(options, callback)

delete(options: DeleteOptions, callback: DeleteCallback): void;
Parameters
Name Description
options DeleteOptions
callback DeleteCallback
Returns
Type Description
void

delete(callback)

delete(callback: DeleteCallback): void;
Parameter
Name Description
callback DeleteCallback
Returns
Type Description
void

disableAutoRetryConditionallyIdempotent_(coreOpts, methodType, localPreconditionOptions)

disableAutoRetryConditionallyIdempotent_(coreOpts: any, methodType: AvailableServiceObjectMethods, localPreconditionOptions?: PreconditionOptions): void;
Parameters
Name Description
coreOpts any
methodType AvailableServiceObjectMethods
localPreconditionOptions PreconditionOptions
Returns
Type Description
void

download(options)

download(options?: DownloadOptions): Promise<DownloadResponse>;
Parameter
Name Description
options DownloadOptions
Returns
Type Description
Promise<DownloadResponse>

download(options, callback)

download(options: DownloadOptions, callback: DownloadCallback): void;
Parameters
Name Description
options DownloadOptions
callback DownloadCallback
Returns
Type Description
void

download(callback)

download(callback: DownloadCallback): void;
Parameter
Name Description
callback DownloadCallback
Returns
Type Description
void

from(publicUrlOrGsUrl, storageInstance, options)

static from(publicUrlOrGsUrl: string, storageInstance: Storage, options?: FileOptions): File;

Gets a reference to a Cloud Storage file from the provided URL in string format.

Parameters
Name Description
publicUrlOrGsUrl string

the URL as a string. Must be of the format gs://bucket/file or https://storage.googleapis.com/bucket/file.

storageInstance Storage

an instance of a Storage object.

options FileOptions

Configuration options

Returns
Type Description
File_2

{File}

generateSignedPostPolicyV2(options)

generateSignedPostPolicyV2(options: GenerateSignedPostPolicyV2Options): Promise<GenerateSignedPostPolicyV2Response>;
Parameter
Name Description
options GenerateSignedPostPolicyV2Options
Returns
Type Description
Promise<GenerateSignedPostPolicyV2Response>

generateSignedPostPolicyV2(options, callback)

generateSignedPostPolicyV2(options: GenerateSignedPostPolicyV2Options, callback: GenerateSignedPostPolicyV2Callback): void;
Parameters
Name Description
options GenerateSignedPostPolicyV2Options
callback GenerateSignedPostPolicyV2Callback
Returns
Type Description
void

generateSignedPostPolicyV2(callback)

generateSignedPostPolicyV2(callback: GenerateSignedPostPolicyV2Callback): void;
Parameter
Name Description
callback GenerateSignedPostPolicyV2Callback
Returns
Type Description
void

generateSignedPostPolicyV4(options)

generateSignedPostPolicyV4(options: GenerateSignedPostPolicyV4Options): Promise<GenerateSignedPostPolicyV4Response>;
Parameter
Name Description
options GenerateSignedPostPolicyV4Options
Returns
Type Description
Promise<GenerateSignedPostPolicyV4Response>

generateSignedPostPolicyV4(options, callback)

generateSignedPostPolicyV4(options: GenerateSignedPostPolicyV4Options, callback: GenerateSignedPostPolicyV4Callback): void;
Parameters
Name Description
options GenerateSignedPostPolicyV4Options
callback GenerateSignedPostPolicyV4Callback
Returns
Type Description
void

generateSignedPostPolicyV4(callback)

generateSignedPostPolicyV4(callback: GenerateSignedPostPolicyV4Callback): void;
Parameter
Name Description
callback GenerateSignedPostPolicyV4Callback
Returns
Type Description
void

get(options)

get(options?: GetFileOptions): Promise<GetResponse<File>>;
Parameter
Name Description
options GetFileOptions
Returns
Type Description
Promise<GetResponse<File>>

get(callback)

get(callback: InstanceResponseCallback<File>): void;
Parameter
Name Description
callback InstanceResponseCallback<File>
Returns
Type Description
void

get(options, callback)

get(options: GetFileOptions, callback: InstanceResponseCallback<File>): void;
Parameters
Name Description
options GetFileOptions
callback InstanceResponseCallback<File>
Returns
Type Description
void

getExpirationDate()

getExpirationDate(): Promise<GetExpirationDateResponse>;
Returns
Type Description
Promise<GetExpirationDateResponse>

getExpirationDate(callback)

getExpirationDate(callback: GetExpirationDateCallback): void;
Parameter
Name Description
callback GetExpirationDateCallback
Returns
Type Description
void

getSignedUrl(cfg)

getSignedUrl(cfg: GetSignedUrlConfig): Promise<GetSignedUrlResponse>;
Parameter
Name Description
cfg GetSignedUrlConfig
Returns
Type Description
Promise<GetSignedUrlResponse>

getSignedUrl(cfg, callback)

getSignedUrl(cfg: GetSignedUrlConfig, callback: GetSignedUrlCallback): void;
Parameters
Name Description
cfg GetSignedUrlConfig
callback GetSignedUrlCallback
Returns
Type Description
void

isPublic()

isPublic(): Promise<IsPublicResponse>;
Returns
Type Description
Promise<IsPublicResponse>

isPublic(callback)

isPublic(callback: IsPublicCallback): void;
Parameter
Name Description
callback IsPublicCallback
Returns
Type Description
void

makePrivate(options)

makePrivate(options?: MakeFilePrivateOptions): Promise<MakeFilePrivateResponse>;
Parameter
Name Description
options MakeFilePrivateOptions
Returns
Type Description
Promise<MakeFilePrivateResponse>

makePrivate(callback)

makePrivate(callback: MakeFilePrivateCallback): void;
Parameter
Name Description
callback MakeFilePrivateCallback
Returns
Type Description
void

makePrivate(options, callback)

makePrivate(options: MakeFilePrivateOptions, callback: MakeFilePrivateCallback): void;
Parameters
Name Description
options MakeFilePrivateOptions
callback MakeFilePrivateCallback
Returns
Type Description
void

makePublic()

makePublic(): Promise<MakeFilePublicResponse>;
Returns
Type Description
Promise<MakeFilePublicResponse>

makePublic(callback)

makePublic(callback: MakeFilePublicCallback): void;
Parameter
Name Description
callback MakeFilePublicCallback
Returns
Type Description
void

move(destination, options)

move(destination: string | Bucket | File, options?: MoveOptions): Promise<MoveResponse>;
Parameters
Name Description
destination string | Bucket | File
options MoveOptions
Returns
Type Description
Promise<MoveResponse>

move(destination, callback)

move(destination: string | Bucket | File, callback: MoveCallback): void;
Parameters
Name Description
destination string | Bucket | File
callback MoveCallback
Returns
Type Description
void

move(destination, options, callback)

move(destination: string | Bucket | File, options: MoveOptions, callback: MoveCallback): void;
Parameters
Name Description
destination string | Bucket | File
options MoveOptions
callback MoveCallback
Returns
Type Description
void

publicUrl()

publicUrl(): string;

The public URL of this File Use to enable anonymous access via the returned URL.

Returns
Type Description
string

{string}

Example

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('albums');
const file = bucket.file('my-file');

// publicUrl will be "https://storage.googleapis.com/albums/my-file"
const publicUrl = file.publicUrl();

rename(destinationFile, options)

rename(destinationFile: string | File, options?: RenameOptions): Promise<RenameResponse>;
Parameters
Name Description
destinationFile string | File
options RenameOptions
Returns
Type Description
Promise<RenameResponse>

rename(destinationFile, callback)

rename(destinationFile: string | File, callback: RenameCallback): void;
Parameters
Name Description
destinationFile string | File
callback RenameCallback
Returns
Type Description
void

rename(destinationFile, options, callback)

rename(destinationFile: string | File, options: RenameOptions, callback: RenameCallback): void;
Parameters
Name Description
destinationFile string | File
options RenameOptions
callback RenameCallback
Returns
Type Description
void

request(reqOpts)

request(reqOpts: DecorateRequestOptions): Promise<RequestResponse>;
Parameter
Name Description
reqOpts DecorateRequestOptions
Returns
Type Description
Promise<RequestResponse>

request(reqOpts, callback)

request(reqOpts: DecorateRequestOptions, callback: BodyResponseCallback): void;
Parameters
Name Description
reqOpts DecorateRequestOptions
callback BodyResponseCallback
Returns
Type Description
void

restore(options)

restore(options: RestoreOptions): Promise<File>;

Restores a soft-deleted file

Parameter
Name Description
options RestoreOptions

Restore options.

Returns
Type Description
Promise<File>

{Promise

rotateEncryptionKey(options)

rotateEncryptionKey(options?: RotateEncryptionKeyOptions): Promise<RotateEncryptionKeyResponse>;
Parameter
Name Description
options RotateEncryptionKeyOptions
Returns
Type Description
Promise<RotateEncryptionKeyResponse>

rotateEncryptionKey(callback)

rotateEncryptionKey(callback: RotateEncryptionKeyCallback): void;
Parameter
Name Description
callback RotateEncryptionKeyCallback
Returns
Type Description
void

rotateEncryptionKey(options, callback)

rotateEncryptionKey(options: RotateEncryptionKeyOptions, callback: RotateEncryptionKeyCallback): void;
Parameters
Name Description
options RotateEncryptionKeyOptions
callback RotateEncryptionKeyCallback
Returns
Type Description
void

save(data, options)

save(data: SaveData, options?: SaveOptions): Promise<void>;
Parameters
Name Description
data SaveData
options SaveOptions
Returns
Type Description
Promise<void>

save(data, callback)

save(data: SaveData, callback: SaveCallback): void;
Parameters
Name Description
data SaveData
callback SaveCallback
Returns
Type Description
void

save(data, options, callback)

save(data: SaveData, options: SaveOptions, callback: SaveCallback): void;
Parameters
Name Description
data SaveData
options SaveOptions
callback SaveCallback
Returns
Type Description
void

setEncryptionKey(encryptionKey)

setEncryptionKey(encryptionKey: string | Buffer): this;

The Storage API allows you to use a custom key for server-side encryption.

See Customer-supplied Encryption Keys

Parameter
Name Description
encryptionKey string | "\"buffer\"".__global.Buffer

An AES-256 encryption key.

Returns
Type Description
this

{File}

Examples

const crypto = require('crypto');
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const myBucket = storage.bucket('my-bucket');

const encryptionKey = crypto.randomBytes(32);

const fileWithCustomEncryption = myBucket.file('my-file');
fileWithCustomEncryption.setEncryptionKey(encryptionKey);

const fileWithoutCustomEncryption = myBucket.file('my-file');

fileWithCustomEncryption.save('data', function(err) {
  // Try to download with the File object that hasn't had
  // `setEncryptionKey()` called:
  fileWithoutCustomEncryption.download(function(err) {
    // We will receive an error:
    //   err.message === 'Bad Request'

    // Try again with the File object we called `setEncryptionKey()` on:
    fileWithCustomEncryption.download(function(err, contents) {
      // contents.toString() === 'data'
    });
  });
});

Example of uploading an encrypted file:


  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // The ID of your GCS bucket
  // const bucketName = 'your-unique-bucket-name';

  // The path to your file to upload
  // const filePath = 'path/to/your/file';

  // The new ID for your GCS file
  // const destFileName = 'your-new-file-name';

  // The key to encrypt the object with
  // const key = 'TIbv/fjexq+VmtXzAlc63J4z5kFmWJ6NdAPQulQBT7g=';

  // Imports the Google Cloud client library
  const {Storage} = require('@google-cloud/storage');

  // Creates a client
  const storage = new Storage();

  async function uploadEncryptedFile() {
    const options = {
      destination: destFileName,
      encryptionKey: Buffer.from(key, 'base64'),

      // Optional:
      // Set a generation-match precondition to avoid potential race conditions
      // and data corruptions. The request to upload is aborted if the object's
      // generation number does not match your precondition. For a destination
      // object that does not yet exist, set the ifGenerationMatch precondition to 0
      // If the destination object already exists in your bucket, set instead a
      // generation-match precondition using its generation number.
      preconditionOpts: {ifGenerationMatch: generationMatchPrecondition},
    };

    await storage.bucket(bucketName).upload(filePath, options);

    console.log(
      `File ${filePath} uploaded to gs://${bucketName}/${destFileName}`
    );
  }

  uploadEncryptedFile().catch(console.error);

Example of downloading an encrypted file:


  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // The ID of your GCS bucket
  // const bucketName = 'your-unique-bucket-name';

  // The ID of your GCS file
  // const srcFileName = 'your-file-name';

  // The path to which the file should be downloaded
  // const destFileName = '/local/path/to/file.txt';

  // The Base64 encoded decryption key, which should be the same key originally
  // used to encrypt the file
  // const encryptionKey = 'TIbv/fjexq+VmtXzAlc63J4z5kFmWJ6NdAPQulQBT7g=';

  // Imports the Google Cloud client library
  const {Storage} = require('@google-cloud/storage');

  // Creates a client
  const storage = new Storage();

  async function downloadEncryptedFile() {
    const options = {
      destination: destFileName,
    };

    // Decrypts and downloads the file. This can only be done with the key used
    // to encrypt and upload the file.
    await storage
      .bucket(bucketName)
      .file(srcFileName)
      .setEncryptionKey(Buffer.from(encryptionKey, 'base64'))
      .download(options);

    console.log(`File ${srcFileName} downloaded to ${destFileName}`);
  }

  downloadEncryptedFile().catch(console.error);

setMetadata(metadata, options)

setMetadata(metadata: FileMetadata, options?: SetMetadataOptions): Promise<SetMetadataResponse<FileMetadata>>;
Parameters
Name Description
metadata FileMetadata
options SetMetadataOptions
Returns
Type Description
Promise<SetMetadataResponse<FileMetadata>>

setMetadata(metadata, callback)

setMetadata(metadata: FileMetadata, callback: MetadataCallback<FileMetadata>): void;
Parameters
Name Description
metadata FileMetadata
callback MetadataCallback<FileMetadata>
Returns
Type Description
void

setMetadata(metadata, options, callback)

setMetadata(metadata: FileMetadata, options: SetMetadataOptions, callback: MetadataCallback<FileMetadata>): void;
Parameters
Name Description
metadata FileMetadata
options SetMetadataOptions
callback MetadataCallback<FileMetadata>
Returns
Type Description
void

setStorageClass(storageClass, options)

setStorageClass(storageClass: string, options?: SetStorageClassOptions): Promise<SetStorageClassResponse>;
Parameters
Name Description
storageClass string
options SetStorageClassOptions
Returns
Type Description
Promise<SetStorageClassResponse>

setStorageClass(storageClass, options, callback)

setStorageClass(storageClass: string, options: SetStorageClassOptions, callback: SetStorageClassCallback): void;
Parameters
Name Description
storageClass string
options SetStorageClassOptions
callback SetStorageClassCallback
Returns
Type Description
void

setStorageClass(storageClass, callback)

setStorageClass(storageClass: string, callback?: SetStorageClassCallback): void;
Parameters
Name Description
storageClass string
callback SetStorageClassCallback
Returns
Type Description
void

setUserProject(userProject)

setUserProject(userProject: string): void;

Set a user project to be billed for all requests made from this File object.

Parameter
Name Description
userProject string

The user project.

Returns
Type Description
void
Example

const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('albums');
const file = bucket.file('my-file');

file.setUserProject('grape-spaceship-123');

startResumableUpload_(dup, options)

startResumableUpload_(dup: Duplexify, options?: CreateResumableUploadOptions): void;

This creates a resumable-upload upload stream.

Parameters
Name Description
dup Duplexify
options CreateResumableUploadOptions

Configuration object.

Returns
Type Description
void

startSimpleUpload_(dup, options)

startSimpleUpload_(dup: Duplexify, options?: CreateWriteStreamOptions): void;

Takes a readable stream and pipes it to a remote file. Unlike startResumableUpload_, which uses the resumable upload technique, this method uses a simple upload (all or nothing).

Parameters
Name Description
dup Duplexify

Duplexify stream of data to pipe to the file.

options CreateWriteStreamOptions

Configuration object.

Returns
Type Description
void