使用指定的项目作为请求者下载文件。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
namespace gcs = ::google::cloud::storage;
[](gcs::Client client, std::string const& bucket_name,
std::string const& object_name, std::string const& billed_project) {
gcs::ObjectReadStream stream = client.ReadObject(
bucket_name, object_name, gcs::UserProject(billed_project));
std::string line;
while (std::getline(stream, line, '\n')) {
std::cout << line << "\n";
}
}
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
using Google.Cloud.Storage.V1;
using System;
using System.IO;
public class DownloadFileRequesterPaysSample
{
public void DownloadFileRequesterPays(
string projectId = "your-project-id",
string bucketName = "your-unique-bucket-name",
string objectName = "my-file-name",
string localPath = "my-local-path/my-file-name")
{
var storage = StorageClient.Create();
using var outputFile = File.OpenWrite(localPath);
storage.DownloadObject(bucketName, objectName, outputFile, new DownloadObjectOptions
{
UserProject = projectId
});
Console.WriteLine($"Downloaded {objectName} to {localPath} paid by {projectId}.");
}
}
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
import (
"context"
"fmt"
"io"
"os"
"time"
"cloud.google.com/go/storage"
)
// downloadUsingRequesterPays downloads an object using billing project.
func downloadUsingRequesterPays(w io.Writer, bucket, object, billingProjectID string) error {
// bucket := "bucket-name"
// object := "object-name"
// billingProjectID := "billing_account_id"
ctx := context.Background()
client, err := storage.NewClient(ctx)
if err != nil {
return fmt.Errorf("storage.NewClient: %v", err)
}
defer client.Close()
b := client.Bucket(bucket).UserProject(billingProjectID)
src := b.Object(object)
// Open local file.
f, err := os.OpenFile("notes.txt", os.O_RDWR|os.O_CREATE, 0755)
if err != nil {
return fmt.Errorf("os.OpenFile: %v", err)
}
ctx, cancel := context.WithTimeout(ctx, time.Second*50)
defer cancel()
rc, err := src.NewReader(ctx)
if err != nil {
return fmt.Errorf("Object(%q).NewReader: %v", object, err)
}
if _, err := io.Copy(f, rc); err != nil {
return fmt.Errorf("io.Copy: %v", err)
}
if err := rc.Close(); err != nil {
return fmt.Errorf("Reader.Close: %v", err)
}
fmt.Fprintf(w, "Downloaded using %v as billing project.\n", billingProjectID)
return nil
}
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import java.nio.file.Path;
public class DownloadRequesterPaysObject {
public static void downloadRequesterPaysObject(
String projectId, String bucketName, String objectName, Path destFilePath) {
// The project ID to bill
// String projectId = "my-billable-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";
// The path to which the file should be downloaded
// Path destFilePath = Paths.get("/local/path/to/file.txt");
Storage storage = StorageOptions.getDefaultInstance().getService();
Blob blob =
storage.get(
BlobId.of(bucketName, objectName), Storage.BlobGetOption.userProject(projectId));
blob.downloadTo(destFilePath, Blob.BlobSourceOption.userProject(projectId));
System.out.println(
"Object " + objectName + " downloaded to " + destFilePath + " and billed to " + projectId);
}
}
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// The project ID to bill
// const projectId = 'my-billable-project-id';
// 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';
// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');
// Creates a client
const storage = new Storage();
async function downloadFileUsingRequesterPays() {
const options = {
destination: destFileName,
userProject: projectId,
};
// Downloads the file
await storage.bucket(bucketName).file(srcFileName).download(options);
console.log(
`gs://${bucketName}/${srcFileName} downloaded to ${destFileName} using requester-pays requests`
);
}
downloadFileUsingRequesterPays().catch(console.error);
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
use Google\Cloud\Storage\StorageClient;
/**
* Download file using specified project as requester
*
* @param string $projectId The ID of your Google Cloud Platform project.
* (e.g. 'my-project-id')
* @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')
* @param string $destination The local destination to save the object.
* (e.g. '/path/to/your/file')
*/
function download_file_requester_pays(string $projectId, string $bucketName, string $objectName, string $destination): void
{
$storage = new StorageClient([
'projectId' => $projectId
]);
$userProject = true;
$bucket = $storage->bucket($bucketName, $userProject);
$object = $bucket->object($objectName);
$object->downloadToFile($destination);
printf('Downloaded gs://%s/%s to %s using requester-pays requests.' . PHP_EOL,
$bucketName, $objectName, basename($destination));
}
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
from google.cloud import storage
def download_file_requester_pays(
bucket_name, project_id, source_blob_name, destination_file_name
):
"""Download file using specified project as the requester"""
# bucket_name = "your-bucket-name"
# project_id = "your-project-id"
# source_blob_name = "source-blob-name"
# destination_file_name = "local-destination-file-name"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name, user_project=project_id)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print(
"Blob {} downloaded to {} using a requester-pays request.".format(
source_blob_name, destination_file_name
)
)
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
def download_file_requester_pays bucket_name:, file_name:, local_file_path:
# The ID of a GCS bucket
# bucket_name = "your-unique-bucket-name"
# The ID of a GCS object
# file_name = "your-file-name"
# The path to which the file should be downloaded
# local_file_path = "/local/path/to/file.txt"
require "google/cloud/storage"
storage = Google::Cloud::Storage.new
bucket = storage.bucket bucket_name, skip_lookup: true, user_project: true
file = bucket.file file_name
file.download local_file_path
puts "Downloaded #{file.name} using billing project #{storage.project}"
end
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。