将所有对象内容下载到内存中。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
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;
}
}
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
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::istream_iterator<char>(stream),
std::istream_iterator<char>()};
std::cout << "The object has " << buffer.size() << " characters\n";
}
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
import (
"context"
"fmt"
"io"
"io/ioutil"
"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: %v", 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: %v", object, err)
}
defer rc.Close()
data, err := ioutil.ReadAll(rc)
if err != nil {
return nil, fmt.Errorf("ioutil.ReadAll: %v", err)
}
fmt.Fprintf(w, "Blob %v downloaded.\n", object)
return data, nil
}
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
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
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
/**
* 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
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
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.
* @param string $objectName The name of your Cloud Storage object.
*/
function download_object_into_memory(
string $bucketName,
string $objectName
): void {
// $bucketName = 'my-bucket';
// $objectName = 'my-object';
$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
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
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_string()
print(
"Downloaded storage object {} from bucket {} as the following string: {}.".format(
blob_name, bucket_name, contents
)
)
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
# 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}"
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。