我已将图片上传到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');
?>
答案 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上的完整代码