图片在Google App Engine中始终以“ unnamed.jpg”名称提供

时间:2018-08-08 00:20:55

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

我正在Google App Engine标准环境下开发PHP应用程序。

我将图像上传到应用程序的关联存储桶,然后使用以下代码来提供图像:

https://lh3.googleusercontent.com/<some_hash>

当然可以重定向到这样的页面:

{{1}}

图像可以正确显示,但是在浏览器的标题中显示为“ unnamed.jpg”,当我尝试将图像保存到计算机时,默认名称显示为“ unnamed.jpg”。每当我上传图片时,无论它的真实名称是什么,或者是否确实通过使用API​​通过我的应用程序上传它,或者是否通过Web云控制台直接将其上传到存储桶,都会发生这种情况。

有什么方法可以指定在提供图像时使用什么名称?

2 个答案:

答案 0 :(得分:0)

您是否设置了标头:“ Content-disposition”,“ Content-Transfer-Encoding”和“ Content-Type”

答案 1 :(得分:0)

CloudStorageTools::getImageServingUrl使用googleusercontent.com,它是一个“沙盒”,因此您不能更改所提供文件的名称。

我建议您看一下CloudStorageTools::serve方法,在该方法中您可以使用save_as参数设置文件名。请注意,该类型是字符串,而不是文档中提到的布尔型,serve将花费一些App Engine计算时间。

代码应如下所示:

use \google\appengine\api\cloud_storage\CloudStorageTools;

// ...

$file_name = "gs://my-app.appspot.com/the_image_name.jpg"
$options = ['save_as' => 'the_image_name.jpg'];
CloudStorageTools::serve($file_name, $options);
相关问题