Har*_*ikk 2 google-app-engine google-cloud-storage google-cloud-platform php-7.2
我觉得我在这里遗漏了一些东西,但是在标准环境中使用 PHP 5.5 的 Google App Engine 上,我可以非常轻松地为我的用户创建上传 URL 来上传文件,而不会在 PHP 中浪费时间,如下所示:
<?php
use google/appengine/api/cloud_storage/CloudStorageTools;
?><form action="<?php echo CloudStorageTools::createUploadUrl('my/upload/handler.php'); ?>" method="post">
<input type="file" name="file" />
<input type="submit" value="Upload" />
</form>
Run Code Online (Sandbox Code Playgroud)
当然大大简化了(因为该 URL 只能持续 60 秒)。
但是,此 API 似乎不适用于运行 PHP 7.2 的应用程序引擎,我确实需要使用它,而且我似乎找不到用于获取上传 URL 的替代 API;这些真的停产了吗?
还有其他非常有用的功能,例如getImageURL()
获取缩略图等。当然,很多文档仍然指向上述处理用户上传到应用引擎站点的方法!
那么如何在较新的 API 中创建和使用上传 URL?
是的,您可以使用适用于 Cloud Storage 的PHP 7.2 Google 客户端库创建和使用上传 URL 。
可以直接将handler放在表单的action属性中,无需调用API。
请注意,在此示例中,您将上传文件的存储桶的名称作为环境变量放入app.yaml文件中:
runtime: php72
env_variables:
GOOGLE_STORAGE_BUCKET: <your_bucket_name>
Run Code Online (Sandbox Code Playgroud)
索引.php :
<?php
namespace Google\Cloud\Samples\AppEngine\Storage;
use Google\Auth\Credentials\GCECredentials;
require_once __DIR__ . '/vendor/autoload.php';
$bucketName = getenv('GOOGLE_STORAGE_BUCKET');
$projectId = getenv('GOOGLE_CLOUD_PROJECT');
$defaultBucketName = sprintf('%s.appspot.com', $projectId);
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
switch ($_SERVER['REQUEST_URI']){
case '/user/upload':
upload_file($bucketName);
exit;
}
header('Location: /');
exit;
}
?>
<html>
<form action="/user/upload" enctype="multipart/form-data" method="post">
Files to upload: <br>
<input type="file" name="uploaded_files" size="40">
<input type="submit" value="Send">
</form>
</html>
Run Code Online (Sandbox Code Playgroud)
处理函数:
function upload_file($bucketName)
{
$fileName = $_FILES['uploaded_files']['name'];
$tempName = $_FILES['uploaded_files']['tmp_name'];
move_uploaded_file($tempName, "gs://${bucketName}/${fileName}.txt");
sprintf('Your file "%s" has been uploaded.', $fileName);
}
Run Code Online (Sandbox Code Playgroud)
作曲家.json:
{
"require": {
"google/cloud-storage": "^1.5"
},
"require-dev": {
"phpunit/phpunit": "^5",
"google/cloud-tools": "^0.6"
}
}
Run Code Online (Sandbox Code Playgroud)
我建议您从 Github 克隆示例并自己尝试。
归档时间: |
|
查看次数: |
847 次 |
最近记录: |