繁体   English   中英

如何使用 PHP 中的 if 语句确认在谷歌存储中成功上传 object

[英]How to confirm a successful uploaded object in google storage with if statement in PHP

我使用下面的代码将文件上传到谷歌存储,这是成功的。 请问我如何使用 if 语句来确认它是否成功,例如:

<?php

    function upload_object($bucketName, $objectName, $source){    
       $storage = new StorageClient();
       $file = fopen($source, 'r');
       $bucket = $storage->bucket($bucketName);
       $object = $bucket->upload($file, ['name' => $objectName);    
          printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
     }
upload_object($bucketName, $objectName, $source);

    if ($object->exists() === false) {
        echo "The object '{$object->name}' does not exist.";
    }

?>

首先,我不知道google-cloud-storage ,但只是从函数返回状态并测试:

function upload_object($bucketName, $objectName, $source){    
   $storage = new StorageClient();
   $file = fopen($source, 'r');
   $bucket = $storage->bucket($bucketName);
   $object = $bucket->upload($file, ['name' => $objectName]);    

   return $object->exists();
}

$result = upload_object($bucketName, $objectName, $source);

if ($result === false) {
   echo "The object '{$object->name}' does not exist.";
} else {
   printf('Uploaded %s to gs://%s/%s' . PHP_EOL, basename($source), $bucketName, $objectName);
}

经过一番搜索后,您似乎可能需要使用GoogleException

use Google\Cloud\Core\Exception\GoogleException;

try {
    $object = $bucket->upload($file, ['name' => $objectName]);
} catch (GoogleException $e) {
    echo $e->getMessage();  //or something
    return false;
}

您可以检查类型为Google\Cloud\Core\Exception\GoogleException的异常以确定在此过程中是否存在问题。 如果没有抛出异常,则您的 object 将已成功上传。

use Google\Cloud\Core\Exception\GoogleException;

try {
    $object = $bucket->upload('mydata', [
        'name' => 'test.txt'
    ]);
} catch (GoogleException $ex) {
    $ex->getMessage(); // handle the failure
}

资料来源: https://github.com/googleapis/google-cloud-php/issues/666

暂无
暂无

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

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