2017-12-28 10 views
0

Ich arbeite an einem Projekt, um Dateien von einer Website mit PHP auf Amazon S3 bucket hochladen zu können.Fehler beim Hochladen mehrerer Dateien nach S3 mit PHP

Allerdings bin ich schlagen ein Problem, wo es mit dem folgenden Fehler kommt:

fopen(uploadDoc/1.jpg): failed to open stream: No such file or directory

ich durch die mehrere Dateien am Looping sie wie so individuell laden:

if (isset($_FILES['files'])) 
{ 
    for ($i = 0; $i < 10; $i++) 
    { 
     if (!empty($_FILES['files']['name'][$i])) 
     { 
      $name = $_FILES['files']['name'][$i]; 
      $tmp_name = $_FILES['files']['tmp_name'][$i]; 
      $ext = explode('.', $name); 
      $ext = strtolower(end($ext)); 
      if ($ext == 'zip') { $temp_file_path = "uploadZip/{$name}"; $s3Key = "zip"; } 
      else { $temp_file_path = "uploadDoc/{$name}"; $s3Key = "docs"; } 
      try 
      { 
       $body = fopen($temp_file_path, 'rb'); 
       $s3->putObject([ 
        'Bucket' => AWS_BUCKET, 
        'Key' => "{$s3Key}/{$name}", 
        'Body' => $body, 
        'ACL' => "public-read" 
       ]); 
      } 
      catch (S3Exception $e) 
      { 
       die('There was an error uploading ' . $e->getMessage()); 
      } 
      fclose($body); 
      unlink($temp_file_path); 
     } 
    } 
} 

Wenn ich versucht, eine einzelne Datei mit dem gleichen Code, aber nicht in einer Schleife hochladen, es funktioniert gut, so dass ich wirklich verwirrt bin.

Im Folgenden finden Sie das Formular verwendet werden, um die Dateien zu laden:

<form action="" method="post" enctype="multipart/form-data"> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input id="file" type="file" name="files[]"><br> 
      <input name="upload" type="submit" value="Upload" class="general-btn blue"> 
     </form> 

Jede Hilfe wird sehr

Antwort

0

ich entdeckt habe, klar sein, dass ich einige Fehler in meinem Code gemacht haben.

Zuerst habe ich eine Codezeile aus dem PHP Code-Schnipsel oben angegebenen verpaßt, das ist:

if ($ext == 'zip') { $temp_file_path = "uploadZip/{$tmp_file_name}"; $s3Key = "zip"; } 
else { $temp_file_path = "uploadDoc/{$tmp_file_name}"; $s3Key = "docs"; } 
move_uploaded_file($tmp_name, $temp_file_path); 
try 

Der zweite Fehler im HTML-Code-Schnipsel oben gemacht wurde, die alle Eingänge gaben die gleiche Datei-ID, durch Ändern der IDs, um eine andere ID haben die Dateien erfolgreich hochgeladen, ohne Fehler

Dank

Verwandte Themen