代码之家  ›  专栏  ›  技术社区  ›  Haravikk

为PHP7.2创建Google云存储上传url

  •  0
  • Haravikk  · 技术社区  · 6 年前

    <?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>
    

    当然大大简化了(因为这个URL只能持续60秒)。

    还有其他非常有用的功能,比如 getImageURL()

    那么,如何在较新的API中创建和使用上传url呢?

    1 回复  |  直到 6 年前
        1
  •  5
  •   TasosZG    6 年前

    是的,你可以创建和使用上传网址 PHP 7.2 Google Client Library

    您可以直接将处理程序放入表单的action属性中,而无需调用API。

    注意,在这个示例中,您将文件上载到的bucket的名称作为环境变量放在 文件:

    runtime: php72
    env_variables:
      GOOGLE_STORAGE_BUCKET: <your_bucket_name>
    

    :

    <?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>
    

    处理函数 :

    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);
    }
    

    编写器.json :

    {
        "require": {
            "google/cloud-storage": "^1.5"
        },
        "require-dev": {
            "phpunit/phpunit": "^5",
            "google/cloud-tools": "^0.6"
        }
    }