谷歌存储文件如何上传使用PHP的应用程序引擎?

时间:2018-06-05 10:57:06

标签: php google-app-engine google-cloud-storage

我是编码世界的新手。我想将一个简单的txt文件上传到我的云存储中的存储桶。我没有找到任何有用的云文档。 这是不工作的代码:

<?php
require_once 'vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;
define("PROJECT_ID", 'projectID');
define("BUCKET_NAME", 'bucketname');
$client = new Google_Client();
$client->setApplicationName("API_Cloud_Storage");
$client->useApplicationDefaultCredentials();
$client->setScopes(["https://www.googleapis.com/auth/cloud-platform"]);
$service = new Google_Service_Storage($client);
$request = $service->objects->listObjects(BUCKET_NAME);
foreach ($request["items"] as $object)
  printf("%s\n", $object->getName());
  printf("%s\n", $object->get);
$storage = new StorageClient();
$bucket = $storage->bucket(BUCKET_NAME); // Put your bucket name here.
$filePath="C:\users\useraccount\Desktop\address_file\textfile.txt";
$objectName="textfile.txt";
 $object = $bucket->upload(file_get_contents($filePath),
 ['name' => $objectName]);

?>

2 个答案:

答案 0 :(得分:0)

幸运的是,Google App Engine(GAE)提供了一个内置的Google云存储(GCS)流包装器,允许您使用许多标准的PHP文件系统函数来读取和编写App Engine PHP应用程序中的文件。我也在提高我的编码技能,并在GCP文档中找到了对我有用的提示。

从您提供的代码段中获取,您必须确保至少完成了两件事:

  1. 您已在Google云端存储(GCS)[1]中正确创建了存储分区。 确保使用您创建的GCS存储桶的名称替换代码中的“BUCKET_NAME”,并指明要上传的文本文件的文件路径。
  2. 您已配置PHP应用程序以将文件写入应用程序[2],或者如果您希望其他用户能够将文件上传到您的GCS存储桶,则允许用户上传[3]。
  3. 这些是标准的操作指南(教程位于导航栏的底部),因此请务必查看Github上提供的示例,以查看完整的代码并使其适应您的风格。

    希望这有帮助!

    [1] https://cloud.google.com/storage/docs/creating-buckets

    [2] https://cloud.google.com/appengine/docs/standard/php/googlestorage/#top_of_page

    [3] https://cloud.google.com/appengine/docs/standard/php/googlestorage/user_upload

答案 1 :(得分:0)

问题似乎在您的代码中,并且您可以参考相关问题中提供的答案(它还有一个指向另一个有用文档的链接),可以帮助您更正代码[1]。您还可以在GitHub [2]中依赖此示例代码。

就上传本地文件的概念而言,以后提供写入它的公共访问权限。我想您可能需要阅读更多关于使用您的应用程序从文件系统上传文件[3]。我还建议您阅读整篇文档,因为它讨论了从脚本或直接从GCS提供文件[4]。

[1] https://stackoverflow.com/a/48559967

[2] https://github.com/GoogleCloudPlatform/php-docs-samples/blob/master/appengine/php55/storage/app.php#L79

[3] https://cloud.google.com/appengine/docs/standard/php/googlestorage/#is_there_any_other_way_to_read_and_write_files

[4] https://cloud.google.com/appengine/docs/standard/php/googlestorage/public_access#top_of_page