ユーザーがGoogleのアプリケーションエンジンで動作するPHPプログラムにファイルをアップロードできるようにするのに問題があります。私はthis google manualに従おうとしています。ユーザーがGoogleのアプリケーションエンジンからGoogleのデータストアに直接アップロードできるようにするにはどうすればよいですか?
Projecteditor.php:
public function index($cluster_id)
{
if($this->require_min_level(1))
{
$project_access_lvl = $this->check_access_lvl($cluster_id);
if($project_access_lvl >= 0)
{
// Upload files to Google Cloud Storage
$my_bucket = 'THE_ID.appspot.com';
$options = ['gs_bucket_name' => $my_bucket]; //todo app id
$upload_url = CloudStorageTools::createUploadUrl('/main.php/upload/handler', $options);
$view_data['upload_url'] = $upload_url;
// Display webpage
$cluster = $this->cluster_model->get_cluster_by_id($cluster_id)[0];
$project = $this->project_model->get_projects($cluster['projecten_project_id'])[0];
$view_data['fase_details'] = $this->get_fase_details($cluster['fase']);
$view_data['project_name'] = $project['naam'];
echo $this->load->view('templates/header', '', TRUE);
echo $this->load->view('projecteditor/index', (isset($view_data)) ? $view_data : '', TRUE);
echo $this->load->view('templates/footer', '', TRUE);
}
else
{
// TODO syslog
}
}
}
Upload.php:
もちろんpublic function handler()
{
$my_bucket = 'THE_ID.appspot.com';
# [START move_uploaded_file]
$file_name = $_FILES['uploaded_files']['name'];
$temp_name = $_FILES['uploaded_files']['tmp_name'];
move_uploaded_file($temp_name, "gs://${my_bucket}/${file_name}.txt");
# [END move_uploaded_file]
return sprintf('Your file "%s" has been uploaded.', $file_name);
}
はIでTHE_IDを交換し、私はCodeIgniterの3で働いています
は、私は次のコントローラを設定しました正しいバケットID。
Projecteditorコントローラに対応するビュー内のフォーム:
<?php
echo form_open($upload_url, array('enctype' => 'multipart/form-data'));
?>
<div class="col-lg-12">
<div id="my-dropzone" class="dropzone" action="#">
<div class="dropzone-previews"></div>
<button type="submit" class="btn btn-success pull-right"><i class="fa fa-upload"></i> <span class="bold">Upload</span></button>
</div>
</div></div>
<?php echo form_close(); ?>
ファイルはjQueryのドロップボックスプラグインを使用してアップロードされます。 CloudStorageTools :: createUploadUrlの内部に間違った相対URLを入力したと思われますが、相対URLとして入力する内容を実際に見つけることはできません。両方のコントローラのための
絶対URLは次のとおりです。
Projecteditor.php: https://example.com/projecteditor/index/SOME_VARIABLE
Upload.php: 私のコードは、私はProjecteditor.phpにポストを得る実行https://example.com/main.php/upload/handler
が、 Upload.phpではなく、データストアバケットも空のままです。
私はまた、Googleストレージバケットについてthis sourceを使用しました。
私は何か間違ったことがあった場合や、データを保存するための別の方法(簡単な方法)がある場合はお知らせください。事前