重命名已上传的用户图片Google Cloud

时间:2017-06-08 10:04:57

标签: php google-cloud-storage image-uploading

我已将图片上传到Google云端,但在上传图片之前,我无法将其重命名为随机字符串。

我想知道是否有人能解决这个问题。

代码:

<?php
# Includes the autoloader for libraries installed with composer
require '../vendor/autoload.php';
use Google\Cloud\Storage\StorageClient;

putenv('GOOGLE_APPLICATION_CREDENTIALS=/PATH TO JSON');
$client = new Google_Client();
$client->useApplicationDefaultCredentials();

$client->setSubject($user_to_impersonate);

   $storage = new StorageClient([
      'projectId' => 'XXXXXXXXXX'
  ]);


   $bucket = $storage->bucket('abcd');

// Upload a file to the bucket.
$bucket->upload(
    fopen('./test.jpg', 'r') // I WANT TO RENAME THIS FILE BEING UPLOADED AND YES i UNDERSTAND IT WILL BE A $_FILE TYPE WHEN I FINISH THE CODE.
);



// Download and store an object from the bucket locally.
$object = $bucket->object('test.jpg');
$object->downloadToFile('/cache/test2.jpg');


?>

1 个答案:

答案 0 :(得分:0)

好的答案非常简单,首先您需要阅读要上传的文件。第二,你会想要生成你的新文件名,为此我使用了两个用户属性(这些属性很可能保持不变或极少变化)。我还使用了请求的时间戳。我的理论是没有两个人应该拥有相同的个人信息(IP地址和用户代理)[我将在完成原型后添加用户UID。

如果有其他人想要这些代码,请参阅下面的内容,请改进并优先考虑分享你会做出的改变(很高兴看到我们所有的想法。

  

这是免费使用,不需要给予信贷

$new_file_name     =   md5(time().md5($_SERVER['REMOTE_ADDR']).md5($_SERVER['HTTP_USER_AGENT']));
    $path = "./test.jpg";
    $ext = pathinfo($path, PATHINFO_EXTENSION);
    $current = file_get_contents('./test.jpg');
    $rand = $new_file_name.".".$ext;
    echo $rand;
    file_put_contents("./cache/".$rand, $current);

// Upload a file to the bucket.
$bucket->upload(
    fopen('./cache/'.$rand, 'r')
);

唯一的问题是你在缓存文件夹中留下了新文件,但是你可以在文件上传后添加删除功能。

github上的完整代码

OFFICIAL GITHUB REPO