如果使用PHP已存在文件,如何停止上传到Google云端存储?

时间:2014-01-28 07:56:48

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

我遇到了GAE和GCS的问题。

我正在尝试上传一个有效的文件 - 但如果文件已经存在,我似乎无法停止上传。它只是一个随机的临时名称。

我有这段代码,但它没有完成这项工作。

<?php
require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php';
use google\appengine\api\cloud_storage\CloudStorageTools;

SESSION_START();

$gs_new_name = $_FILES["uploaded_files"]['name'];
$image = CloudStorageTools::getPublicUrl("gs://bucket/".$gs_new_name, true);

if(getimagesize($image) !== FALSE){
    $gs_name = $_FILES["uploaded_files"]['tmp_name'];
    move_uploaded_file($gs_name, "gs://bucket/".$gs_new_name);
} else{
    die();
}

?>

1 个答案:

答案 0 :(得分:1)

可以停止通过PHP上传到GCS。通过CloudStorageTools::createUploadUrl()直接上传到GCS时,整个HTTP请求将发送到处理上传的GCS代理,然后将请求转发回App Engine应用程序。那时PHP将GCS上传文件的位置添加到$_FILES数组。因此,执行die()的当前方法不起作用,因为在执行脚本之前已经执行了整个上载。

没有检查客户端(通过JavaScript)的特定文件名/扩展名(很多主题)我不知道你会怎么做这样的事情。我也不完全确定你想要完成什么。您只是想将文件限制为图像类型吗?如果这样检查客户端的扩展,然后执行类似于你的扩展应该做的伎俩。只有调用die()而不是调用unlink($gs_name)才能删除临时文件。