2017-06-08 26 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

的完整代碼