上传的图像不可公开读取

时间:2014-02-15 02:31:36

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

我无法通过getPublicUrl()返回的网址查看图片。该图片通过Google Cloud Storage直接上传到HTTP POST,我可以在http://localhost:8000上的数据存储区/ Blobstore查看器中看到它们。

try{
     echo CloudStorageTools::getPublicUrl("gs://qbucket_first/sample.jpeg", true);
   }catch ( CloudStorageException $e ) {
      echo 'There was an exception creating the Image Public URL, details ' . $e->getMessage();
    }

我得到的是:http://localhost:8080/_ah/gcs/qbucket_first/sample.jpeg但是在输入该网址时收到404错误。我该如何解决这个问题?我使用的是Chrome,Mac OS X,GAELauncher v1.8.9 PHP。

编辑1

如果我运行此代码:

file_put_contents("gs://qbucket_first/hello.txt", "Hello");
echo CloudStorageTools::getPublicUrl("gs://qbucket_first/hello.txt", true);

我得到了

http://localhost:8080/_ah/gcs/qbucket_first/hello.txt

输入此URL后,我可以下载文件并阅读内容。因此它适用于文本文件,这意味着Datastore正在使用本地开发。

3 个答案:

答案 0 :(得分:1)

Python版Google App Engine也是如此。

dev_appserver.py为本地开发创建虚假云存储,当您在本地环境中向Google云端存储写入内容时,它实际上将其写入虚假空间,本地环境中的getPublicUrl()仅获取虚假URL您当地的Google云端存储。

首次将文件上传到真实的Google云端存储中时,在本地环境中就会获得404.

第二次将文件保存在本地运行时,因此它实际写入本地伪造的GCS环境,因此它第二次运行。

答案 1 :(得分:0)

您正在使用开发服务器,这似乎是问题所在。从生产中运行它。

答案 2 :(得分:0)

图片文件名是否有空格? 如果是,请删除空格或替换为_。