Google Cloud Storage качи нечетливи имена на файлове (php)

След някои проблеми най-накрая успях да кача файлове с google app engine в моята кофа, но сега името на качения файл е нечетливо, като временно име, криптирано или нещо подобно:

L2FwcGhvc3RpbmdfcHJvZC9ibG9icy9BRW5CMlVvQWFjdkRYbWhtY1dPRGc2ZjlkVzRUU0lOV0FFMThWZnAxbUl1MzFVUndLSWdYVTBvdHhyYXl4UWdNOElXWklvX2hkQjdfaHYxbWNvc 0dlSEtSQ184enJCU3M4QS5PTW5KWVBiTWdWZTJGdmQ4

Как мога да дам името, което искам на качен файл???

Използвам същия код като този, даден в документацията на разработчиците на Google, като този:

require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php';
use google\appengine\api\cloud_storage\CloudStorageTools;

$options = [ 'gs_bucket_name' => 'my_bucket' ];
$upload_url = CloudStorageTools::createUploadUrl('/upload_handler.php', $options);


<form action="<?php echo $upload_url?>" enctype="multipart/form-data" method="post">
    Files to upload: <br>
   <input type="file" name="uploaded_files" size="40">
   <input type="submit" value="Send">
</form>

Някой знае ли дали S3 на Amazon е по-лесен и по-удобен за стандарта? Освен това дали е възможно да се комуникира с GAP, мисля, че прочетох, че е възможно, но сега не съм сигурен в нищо, твърде късно и мозъкът ми е изгорял :(

Благодаря предварително!!


person mikelzl    schedule 26.09.2014    source източник
comment
О, добре, трябва да променя upload_handler.php... изглежда очевидно, но нещо не съм разбрал правилно...   -  person mikelzl    schedule 26.09.2014
comment
Предполагам, че вече сте намерили отговора, но за протокола трябва да използвате move_uploaded_file, за да преименувате временния файл.   -  person Mars    schedule 29.09.2014


Отговори (1)


Направих го, беше лесно, просто не съм разбрал нещо...

Трябва да се направи в upload_handler.php, очевидно е, но...xD. И както казва Марс с move_uploaded_file, или с rename. Нещо подобно (може би е полезно за някого):

$gs_tmpName = $_FILES["myfile"]['tmp_name'];
$ext = strrchr($gs_name, ".");
$desired_name = "<desired_name>$ext";
$desired_name = mb_convert_encoding($desired_name, "UTF-8", "AUTO");
$desired_name = urlencode($desired_name);
$options = array('gs'=>array('acl'=>'public-read','Content-Type' => $_FILES['myfile']['type']));
$ctx = stream_context_create($options);
rename($gs_tmpName, "gs://<bucket_name>/".$desired_name, $ctx);
$publicUrl = CloudStorageTools::getPublicUrl('gs://<bucket_name>/'.$desired_name , true);
person mikelzl    schedule 29.09.2014