Download objects into memory

This page shows you how to download objects from your Cloud Storage buckets into memory by using Cloud Storage client libraries. Downloading into memory is useful when you want to avoid unnecessary writes to persistent storage. For instructions on how to download objects directly to persistent memory, see Downloading objects to persistent memory . For a conceptual overview of how downloads work in Cloud Storage, see Uploads and downloads .

Required roles

In order to get the required permissions for downloading objects into memory, ask your administrator to grant you the Storage Object Viewer ( roles/storage.objectViewer ) role on the bucket.

This role contains the permission required to download objects. To see the exact permission that's required, expand the Required permissionssection:

Required permissions

  • storage.objects.get

You might also be able to get this permission with other predefined roles or custom roles .

For instructions on granting roles on buckets, see Use IAM with buckets .

Download an object into memory

Client libraries

C++

For more information, see the Cloud Storage C++ API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  namespace 
  
 gcs 
  
 = 
  
 :: 
 google 
 :: 
 cloud 
 :: 
 storage 
 ; 
 []( 
 gcs 
 :: 
 Client 
  
 client 
 , 
  
 std 
 :: 
 string 
  
 const 
&  
 bucket_name 
 , 
  
 std 
 :: 
 string 
  
 const 
&  
 object_name 
 ) 
  
 { 
  
 gcs 
 :: 
 ObjectReadStream 
  
 stream 
  
 = 
  
 client 
 . 
 ReadObject 
 ( 
 bucket_name 
 , 
  
 object_name 
 ); 
  
 std 
 :: 
 string 
  
 buffer 
 { 
 std 
 :: 
 istreambuf_iterator<char> 
 ( 
 stream 
 ), 
  
 std 
 :: 
 istreambuf_iterator<char> 
 ()}; 
  
 if 
  
 ( 
 stream 
 . 
 bad 
 ()) 
  
 throw 
  
 google 
 :: 
 cloud 
 :: 
 Status 
 ( 
 stream 
 . 
 status 
 ()); 
  
 std 
 :: 
 cout 
 << 
 "The object has " 
 << 
 buffer 
 . 
 size 
 () 
 << 
 " characters 
 \n 
 " 
 ; 
 } 
 

C#

For more information, see the Cloud Storage C# API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  using 
  
  Google.Cloud.Storage.V1 
 
 ; 
 using 
  
 System 
 ; 
 using 
  
 System.IO 
 ; 
 public 
  
 class 
  
 DownloadObjectIntoMemorySample 
 { 
  
 public 
  
 Stream 
  
 DownloadObjectIntoMemory 
 ( 
  
 string 
  
 bucketName 
  
 = 
  
 "unique-bucket-name" 
 , 
  
 string 
  
 objectName 
  
 = 
  
 "file-name" 
 ) 
  
 { 
  
 var 
  
 storage 
  
 = 
  
  StorageClient 
 
 . 
  Create 
 
 (); 
  
 Stream 
  
 stream 
  
 = 
  
 new 
  
 MemoryStream 
 (); 
  
 storage 
 . 
 DownloadObject 
 ( 
 bucketName 
 , 
  
 objectName 
 , 
  
 stream 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"The contents of {objectName} from bucket {bucketName} are downloaded" 
 ); 
  
 return 
  
 stream 
 ; 
  
 } 
 } 
 

Go

For more information, see the Cloud Storage Go API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  import 
  
 ( 
  
 "context" 
  
 "fmt" 
  
 "io" 
  
 "time" 
  
 "cloud.google.com/go/storage" 
 ) 
 // downloadFileIntoMemory downloads an object. 
 func 
  
 downloadFileIntoMemory 
 ( 
 w 
  
 io 
 . 
  Writer 
 
 , 
  
 bucket 
 , 
  
 object 
  
 string 
 ) 
  
 ([] 
 byte 
 , 
  
 error 
 ) 
  
 { 
  
 // bucket := "bucket-name" 
  
 // object := "object-name" 
  
 ctx 
  
 := 
  
 context 
 . 
 Background 
 () 
  
 client 
 , 
  
 err 
  
 := 
  
 storage 
 . 
 NewClient 
 ( 
 ctx 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 nil 
 , 
  
 fmt 
 . 
 Errorf 
 ( 
 "storage.NewClient: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 defer 
  
 client 
 . 
 Close 
 () 
  
 ctx 
 , 
  
 cancel 
  
 := 
  
 context 
 . 
 WithTimeout 
 ( 
 ctx 
 , 
  
 time 
 . 
 Second 
 * 
 50 
 ) 
  
 defer 
  
 cancel 
 () 
  
 rc 
 , 
  
 err 
  
 := 
  
 client 
 . 
  Bucket 
 
 ( 
 bucket 
 ). 
  Object 
 
 ( 
 object 
 ). 
  NewReader 
 
 ( 
 ctx 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 nil 
 , 
  
 fmt 
 . 
 Errorf 
 ( 
 "Object(%q).NewReader: %w" 
 , 
  
 object 
 , 
  
 err 
 ) 
  
 } 
  
 defer 
  
 rc 
 . 
 Close 
 () 
  
 data 
 , 
  
 err 
  
 := 
  
 io 
 . 
 ReadAll 
 ( 
 rc 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 nil 
 , 
  
 fmt 
 . 
 Errorf 
 ( 
 "io.ReadAll: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "Blob %v downloaded.\n" 
 , 
  
 object 
 ) 
  
 return 
  
 data 
 , 
  
 nil 
 } 
 

Java

For more information, see the Cloud Storage Java API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  import 
  
 com.google.cloud.storage. Storage 
 
 ; 
 import 
  
 com.google.cloud.storage. StorageOptions 
 
 ; 
 import 
  
 java.nio.charset.StandardCharsets 
 ; 
 public 
  
 class 
 DownloadObjectIntoMemory 
  
 { 
  
 public 
  
 static 
  
 void 
  
 downloadObjectIntoMemory 
 ( 
  
 String 
  
 projectId 
 , 
  
 String 
  
 bucketName 
 , 
  
 String 
  
 objectName 
 ) 
  
 { 
  
 // The ID of your GCP project 
  
 // String projectId = "your-project-id"; 
  
 // The ID of your GCS bucket 
  
 // String bucketName = "your-unique-bucket-name"; 
  
 // The ID of your GCS object 
  
 // String objectName = "your-object-name"; 
  
  Storage 
 
  
 storage 
  
 = 
  
  StorageOptions 
 
 . 
 newBuilder 
 (). 
 setProjectId 
 ( 
 projectId 
 ). 
 build 
 (). 
  getService 
 
 (); 
  
 byte 
 [] 
  
 content 
  
 = 
  
 storage 
 . 
  readAllBytes 
 
 ( 
 bucketName 
 , 
  
 objectName 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
  
 "The contents of " 
  
 + 
  
 objectName 
  
 + 
  
 " from bucket name " 
  
 + 
  
 bucketName 
  
 + 
  
 " are: " 
  
 + 
  
 new 
  
 String 
 ( 
 content 
 , 
  
 StandardCharsets 
 . 
 UTF_8 
 )); 
  
 } 
 } 
 

Node.js

For more information, see the Cloud Storage Node.js API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  /** 
 * 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 fileName = 'your-file-name'; 
 // Imports the Google Cloud client library 
 const 
  
 { 
 Storage 
 } 
  
 = 
  
 require 
 ( 
 ' @google-cloud/storage 
' 
 ); 
 // Creates a client 
 const 
  
 storage 
  
 = 
  
 new 
  
 Storage 
 (); 
 async 
  
 function 
  
 downloadIntoMemory 
 () 
  
 { 
  
 // Downloads the file into a buffer in memory. 
  
 const 
  
 contents 
  
 = 
  
 await 
  
 storage 
 . 
 bucket 
 ( 
 bucketName 
 ). 
 file 
 ( 
 fileName 
 ). 
  download 
 
 (); 
  
 console 
 . 
 log 
 ( 
  
 `Contents of gs:// 
 ${ 
 bucketName 
 } 
 / 
 ${ 
 fileName 
 } 
 are 
 ${ 
 contents 
 . 
 toString 
 () 
 } 
 .` 
  
 ); 
 } 
 downloadIntoMemory 
 (). 
 catch 
 ( 
 console 
 . 
 error 
 ); 
 

PHP

For more information, see the Cloud Storage PHP API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  use Google\Cloud\Storage\StorageClient; 
 /** 
 * Download an object from Cloud Storage and save into a buffer in memory. 
 * 
 * @param string $bucketName The name of your Cloud Storage bucket. 
 *        (e.g. 'my-bucket') 
 * @param string $objectName The name of your Cloud Storage object. 
 *        (e.g. 'my-object') 
 */ 
 function download_object_into_memory( 
 string $bucketName, 
 string $objectName 
 ): void { 
 $storage = new StorageClient(); 
 $bucket = $storage->bucket($bucketName); 
 $object = $bucket->object($objectName); 
 $contents = $object->downloadAsString(); 
 printf( 
 'Downloaded %s from gs://%s/%s' . PHP_EOL, 
 $contents, 
 $bucketName, 
 $objectName 
 ); 
 } 
 

Python

For more information, see the Cloud Storage Python API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  from 
  
 google.cloud 
  
 import 
  storage 
 
 def 
  
 download_blob_into_memory 
 ( 
 bucket_name 
 , 
 blob_name 
 ): 
  
 """Downloads a blob into memory.""" 
 # The ID of your GCS bucket 
 # bucket_name = "your-bucket-name" 
 # The ID of your GCS object 
 # blob_name = "storage-object-name" 
 storage_client 
 = 
  storage 
 
 . 
  Client 
 
 () 
 bucket 
 = 
 storage_client 
 . 
  bucket 
 
 ( 
 bucket_name 
 ) 
 # Construct a client side representation of a blob. 
 # Note `Bucket.blob` differs from `Bucket.get_blob` as it doesn't retrieve 
 # any content from Google Cloud Storage. As we don't need additional data, 
 # using `Bucket.blob` is preferred here. 
 blob 
 = 
 bucket 
 . 
 blob 
 ( 
 blob_name 
 ) 
 contents 
 = 
 blob 
 . 
  download_as_bytes 
 
 () 
 print 
 ( 
 "Downloaded storage object 
 {} 
 from bucket 
 {} 
 as the following bytes object: 
 {} 
 ." 
 . 
 format 
 ( 
 blob_name 
 , 
 bucket_name 
 , 
 contents 
 . 
 decode 
 ( 
 "utf-8" 
 ) 
 ) 
 ) 
 

Ruby

For more information, see the Cloud Storage Ruby API reference documentation .

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, see Set up authentication for client libraries .

  # The name of the bucket to access 
 # bucket_name = "my-bucket" 
 # The name of the remote file to download 
 # file_name = "file.txt" 
 require 
  
 "google/cloud/storage" 
 storage 
  
 = 
  
 Google 
 :: 
 Cloud 
 :: 
  Storage 
 
 . 
  new 
 
 bucket 
  
 = 
  
 storage 
 . 
 bucket 
  
 bucket_name 
 , 
  
 skip_lookup 
 : 
  
 true 
 file 
  
 = 
  
 bucket 
 . 
  file 
 
  
 file_name 
 downloaded 
  
 = 
  
 file 
 . 
  download 
 
 downloaded 
 . 
 rewind 
  
 # Optional - not needed on first read 
 contents 
  
 = 
  
 downloaded 
 . 
 read 
 puts 
  
 "Contents of storage object 
 #{ 
 file 
 . 
 name 
 } 
 in bucket 
 #{ 
 bucket_name 
 } 
 are: 
 #{ 
 contents 
 } 
 " 
 

What's next

Design a Mobile Site
View Site in Mobile | Classic
Share by: