繁体   English   中英

如果使用PHP已经存在文件,如何停止上传到Google Cloud Storage?

[英]How to stop upload to Google Cloud Storage if file already exists using PHP?

我在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();
}

?>

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

缺少检查客户端(通过JavaScript)的特定文件名/扩展名(有关大量主题)的方法,我不确定您将如何执行此操作。 我也不完全确定您要完成什么。 您是否只是在将文件限制为仅图像类型? 如果是这样,请在客户端检查扩展名,然后执行与您所执行的检查类似的检查即可。 只有代替调用die()您才能调用unlink($gs_name)删除临时文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM