0

Ich habe Probleme, die Benutzer Dateien in mein PHP-Programm auf Google App-Engine hochladen lassen. Ich versuche zu folgen this google manual.Wie können Nutzer die google app engine direkt in google datastorage hochladen?

ich mit codeigniter arbeite 3, habe ich folgende Controller auf:

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); 
} 

Natürlich habe ich ersetzt THE_ID mit der Korrekte Bucket-ID

Die Form in der Ansicht, dass mit dem Projekteditor Controller entspricht:

<?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>&nbsp;&nbsp;<span class="bold">Upload</span></button>    
     </div> 
    </div></div> 
<?php echo form_close(); ?> 

Die Dateien mithilfe des Plugin jQuery Dropbox hochgeladen werden. Ich vermute, dass ich die falsche relative URL in CloudStorageTools :: createUploadUrl eingegeben habe, aber ich kann nicht wirklich herausfinden, was ich als relative URL eingeben soll.

die absolute Urls für beide Regler sind:

Projecteditor.php: https://example.com/projecteditor/index/SOME_VARIABLE

upload.php: https://example.com/main.php/upload/handler

Wenn mein Code ausführt ich einen Beitrag zum Projecteditor.php bekommen, aber Nicht in der Upload.php bleibt auch der Datenspeicher-Bucket leer.

Ich habe auch this source über den Google Storage Bucket verwendet.

Bitte lassen Sie mich wissen, wenn ich etwas falsch gemacht habe oder es alternative Möglichkeiten gibt (einfachere Wege), um meine Daten zu speichern.

Vielen Dank im Voraus

Antwort

0

Offenbar eine Fehlkonfiguration in der jQuery-Dropbox-Plugin, das die Dateien nicht hochgeladen verhindert, auf dem PHP-Seite alles funktionierte gut war.