2017-06-08 24 views
1

我将图片上传到谷歌云,但是我无法在图片上传之前将它们重命名为随机字符串。重命名上传的用户图片Google Cloud

我想知道如果有人有这个请求的解决方案。

代码:

<?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'); 


?> 

回答

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

的完整代码