У меня проблема. любая помощь приветствуется.
Я разрабатываю решение, которое должно использовать Google API, как облачное хранилище, диск и т. Д.
На странице классического профиля я должен загрузить изображение профиля. затем я использую angularjs для публикации данных в моем appengine / php / yii
formPHP:
`
<?php
require_once 'google/appengine/api/cloud_storage/CloudStorageTools.php';
use google\appengine\api\cloud_storage\CloudStorageTools;
$options = [ 'gs_bucket_name' => 'seektrabajo' ];
$upload_url = CloudStorageTools::createUploadUrl('/perfiles/subirFotoPerfil', $options);
?>
<input type="file" name="file"nv-file-select="uploader.uploadAll()"uploader="uploader" />
`
и при отправке отправьте данные в Google и Google в службу yii Ajax:
`
public function actionSubirFotoPerfil(){
$answer = array('answer'=>'Incompleted','serverFile'=>'sinfoto.png');
if(!empty( $_FILES )){
$filename = $_FILES['file']['name'];
$gs_name = $_FILES['file']['tmp_name'];
move_uploaded_file($gs_name, 'gs://seektrabajo/'.$filename);
$answer = array( 'answer' => 'File transfer completed','serverFile' => $filename);
}
echo json_encode( $answer );
Yii::app()->end();
}
`
проблема в том, что никогда не сохраняйте файл, загруженный в мое хранилище, в облачном хранилище.
это не работает для разработки / локального режима и либо appengine развернут.
В Appengine Land я получаю эту ошибку:
Я просто получаю разрешение на ведро:
gsutil acl ch -u [email protected]:FULL_CONTROL gs://seektrabajo
[email protected] вы получаете из моей консоли google / apis-autentications / Email
![ошибка консоли веб-браузера] [1]
http://i.stack.imgur.com/noKnh.png
У кого-нибудь есть идея?
Благодарю.
Почему вы загружаете файлы в статический обработчик, а затем загружаете их в GCS? использование createUploadUrl()
чтобы шаблон <form>
ты служишь. Предоставьте функцию обратного вызова в вашем приложении для приложения, и после загрузки файла в ваше приложение будет отправлен запрос с остальными параметрами формы, метаданными файла и т. Д.
С шаблоном, который вы используете, возникает не только головная боль при попытке выяснить, как правильно передавать данные, но и тот простой факт, что вы обрабатываете все, что нужно для чтения / записи. в вашем случае, что, безусловно, не очень хорошая идея, если вы собираетесь использовать это в производственном коде, где вы платите за использованные ресурсы.
Короче говоря, нет причин использовать этот шаблон. В традиционном веб-приложении вы отправляете файловую форму на свой сервер по маршруту и делаете то же, что и в своем примере кода (за исключением пересылки в GCS), но с App Engine вам нужно думать немного иначе, чем традиционными способами. веб-разработки на одной виртуальной машине, которую вы приобрели и на которой работаете PHP.
Других решений пока нет …