从公共数据集对象中下载对象。
深入探索
如需查看包含此代码示例的详细文档,请参阅以下内容:
代码示例
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
using Google.Cloud.Storage.V1;
using System;
using System.IO;
public class DownloadPublicFileSample
{
public string DownloadPublicFile(
string bucketName = "your-bucket-name",
string objectName = "your-object-name",
string localPath = "path/to/download/object/to")
{
var storage = StorageClient.CreateUnauthenticated();
using var outputFile = File.OpenWrite(localPath);
storage.DownloadObject(bucketName, objectName, outputFile);
Console.WriteLine($"Downloaded public file {objectName} from bucket {bucketName} to {localPath}.");
return localPath;
}
}
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
namespace gcs = ::google::cloud::storage;
[](std::string const& bucket_name, std::string const& object_name) {
// Create a client that does not authenticate with the server.
auto client = gcs::Client{
google::cloud::Options{}.set<google::cloud::UnifiedCredentialsOption>(
google::cloud::MakeInsecureCredentials())};
// Read an object, the object must have been made public.
gcs::ObjectReadStream stream = client.ReadObject(bucket_name, object_name);
int count = 0;
std::string line;
while (std::getline(stream, line, '\n')) {
++count;
}
std::cout << "The object has " << count << " lines\n";
}
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
import (
"context"
"fmt"
"io"
"io/ioutil"
"time"
"cloud.google.com/go/storage"
"google.golang.org/api/option"
)
// downloadPublicFile downloads a public object.
func downloadPublicFile(w io.Writer, bucket, object string) ([]byte, error) {
// bucket := "bucket-name"
// object := "object-name"
ctx := context.Background()
// Create a client that does not authenticate with the server.
client, err := storage.NewClient(ctx, option.WithoutAuthentication())
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.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 DownloadPublicObject {
public static void downloadPublicObject(
String bucketName, String publicObjectName, Path destFilePath) {
// The name of the bucket to access
// String bucketName = "my-bucket";
// The name of the remote public file to download
// String publicObjectName = "publicfile.txt";
// The path to which the file should be downloaded
// Path destFilePath = Paths.get("/local/path/to/file.txt");
// Instantiate an anonymous Google Cloud Storage client, which can only access public files
Storage storage = StorageOptions.getUnauthenticatedInstance().getService();
Blob blob = storage.get(BlobId.of(bucketName, publicObjectName));
blob.downloadTo(destFilePath);
System.out.println(
"Downloaded public object "
+ publicObjectName
+ " from bucket name "
+ bucketName
+ " to "
+ destFilePath);
}
}
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 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 downloadPublicFile() {
const options = {
destination: destFileName,
};
// Download public file.
await storage.bucket(bucketName).file(srcFileName).download(options);
console.log(
`Downloaded public file ${srcFileName} from bucket name ${bucketName} to ${destFileName}`
);
}
downloadPublicFile().catch(console.error);
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
use Google\Cloud\Storage\StorageClient;
/**
* Download a public file using anonymous credentials.
*
* @param string $bucketName The name of your Cloud Storage bucket.
* @param string $objectName The name of your Cloud Storage object.
* @param string $destination The local destination to save the object.
*/
function download_public_file($bucketName, $objectName, $destination)
{
// $bucketName = 'my-bucket';
// $objectName = 'my-object';
// $destination = '/home/admin/downloads/my-object';
// create a storage client without authentication
$storage = new StorageClient([
]);
$bucket = $storage->bucket($bucketName);
$object = $bucket->object($objectName);
// set `shouldSignRequest` to false to force the client to not authenticate.
// if you do not have any client configuration enabled (i.e. application
// default credentials), that option can be omitted.
$object->downloadToFile($destination, [
'shouldSignRequest' => false,
]);
printf(
'Downloaded public object %s from bucket %s to %s',
$objectName,
$bucketName,
$destination
);
}
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
from google.cloud import storage
def download_public_file(bucket_name, source_blob_name, destination_file_name):
"""Downloads a public blob from the bucket."""
# bucket_name = "your-bucket-name"
# source_blob_name = "storage-object-name"
# destination_file_name = "local/path/to/file"
storage_client = storage.Client.create_anonymous_client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print(
"Downloaded public blob {} from bucket {} to {}.".format(
source_blob_name, bucket.name, destination_file_name
)
)
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
def download_public_file bucket_name:, file_name:, local_file_path:
# The name of the bucket to access
# bucket_name = "my-bucket"
# The name of the remote public file to download
# file_name = "publicfile.txt"
# 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.anonymous
bucket = storage.bucket bucket_name, skip_lookup: true
file = bucket.file file_name
file.download local_file_path
puts "Downloaded public object #{file.name} from bucket #{bucket} to #{local_file_path}"
end
后续步骤
如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器。