在 Google App Engine PHP 5 标准环境中,部署应用的本地文件系统不可写。此行为可确保应用的安全性和可扩展性。
但是,如果您的应用需要在运行时读写文件,则您可以使用 PHP 5 标准环境提供的内置 Google Cloud Storage 流封装容器并利用许多标准 PHP 文件系统函数来读写文件。
您可以通过两种方法向 Google Cloud Storage 写入文件:
- 从应用写入文件
- 简单的文件写入
- 流文件写入
- 让用户将文件上传到 Google Cloud Storage
从应用写入文件
如果您从应用写入文件,则可以一次写入整个文件,也可以流的方式写入文件。
适用于 Cloud Storage 的 App Engine 流封装容器内置于运行时,并在您提供以 gs://
开头的文件名时使用。该封装容器要求存储桶或文件对象的名称采用以下形式:
gs://bucket_name/desired_object_name
简单的文件写入
利用使用有效 Cloud Storage 网址的 file_put_contents
,可从应用将数据写入 Google Cloud Storage。例如:
其中 my_bucket
是正确配置的 Google Cloud Storage 存储分区。
或者,如果要使用流选项提供权限、缓存和/或元数据选项,则可以按如下所示的方式写入文件:
流文件写入
或者,您也可以使用 fopen
/fwrite
以流的方式写入数据:
请注意,使用流时,数据将以较小数据块的形式刷新到 Google Cloud Storage。 您事先无需知道要写入的数据的总长度:系统会在文件资源关闭后计算总长度:
以上就是写入文件的基本方法。要了解特殊用例和更高级的文件管理,请参阅下一步做什么下列出的主题。
删除文件
如果要删除文件本身,请使用 PHP unlink() 函数。
用户上传
要详细了解此文件写入选项,请参阅允许用户上传文件
读取文件
要了解如何从 Google Cloud Storage 读取文件,请参阅提供文件的公开访问权限
设置和要求
您需要激活 Google Cloud Storage 并创建存储桶。如需了解详情,请参阅设置。
支持的 PHP 5 文件系统函数
系统支持很多常用的 PHP 5 文件函数,以及文件信息和目录函数。如需受支持的 PHP 函数的完整列表,请参阅 PHP 5 文件系统函数支持。
Cloud Storage Tools API 提供的扩展功能
Google Cloud Storage 流封装容器可让您使用 PHP 文件系统调用。但是,您可能需要使用扩展功能,才能获取 Google Cloud Storage 的最佳使用效果。Cloud Storage Tools API 中提供了以下扩展功能:
此 API 提供了一组支持传送文件和图片的函数,以及其他有用的实用工具。我们将在其他主题页面中介绍其中的多个功能。
可以通过其他方式读写文件吗?
App Engine PHP 5 应用必须使用 Cloud Storage 流封装容器在运行时写入文件。但是,如果应用需要读取文件且这些文件是静态的,您可以使用 file_get_contents
等 PHP 文件系统函数选择性地读取随应用一并上传的静态文件。
例如:
其中,指定的路径必须是相对于访问文件的脚本的路径。
将应用部署到 App Engine 时,您必须在应用子目录中上传一个或多个文件,并且必须配置 app.yaml
文件,以便您的应用可以访问这些文件。如需了解完整详情,请参阅使用 app.yaml
配置 PHP 5 应用。
在 app.yaml
配置中,请注意,如果您使用静态文件或目录处理程序(static_files
或 static_dir
),则必须指定已设置为 true 的 application_readable
,否则您的应用将无法读取相应文件。但是,如果这些文件由 script
处理程序提供,则不需要这样做,因为系统默认这些文件可供脚本处理程序读取。
下一步做什么
要详细了解如何使用 Cloud Storage Tools API,请阅读以下主题:
- 设置,快速设置说明。
- 提供文件的公开访问权限,介绍如何允许用户通过浏览器下载文件。
- 允许用户上传文件,介绍如何绕过您的应用,直接通过浏览器上传文件。
- 使用图片文件,介绍管理和提供图片的最佳方式。
- 高级文件管理,涵盖以下内容:
- 权限、缓存和元数据流选项。
- PHP 文件系统函数支持。
- 使用 PHP
include
和require
。 - 读取和写入自定义元数据。
- 缓存文件读取。