2016-06-24 19 views
0

Ich versuche, eine Datei in einen Ordner in meinem Server mit XMLHttpRequest() und PHP hochladen. Hier ist die HTML-Datei fu2.html:

<form action="fu2.php" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file" id="file"><br><br> 
    <input type="button" value="Upload" onclick="loadFile()"> 
</form> 
<script> 
function loadFile() { 

    var myFileList = document.getElementById("file").files; 
    var fileToUpload = myFileList[0]; 
    alert(fileToUpload.name+","+fileToUpload.tmp_name); 
    var xhr = new XMLHttpRequest(); 
    xhr.open("POST", 'http://10.192.44.143/pgadmsn/fu2.php',false); 
    xhr.send(fileToUpload); 
    alert(xhr.responseText); 
} 
</script> 

Die PHP-Datei fu2.php ist:

<?php 
if(isset($_FILES["fileToUpload"])){ 
$name = $_FILES["fileToUpload"]["name"]; 
$tmp_name = $_FILES['fileToUpload']['tmp_name']; 

if (isset ($name)) { 
    if (!empty($name)) { 

    $location = 'uploads/'; 

    if (move_uploaded_file($tmp_name, $location.$name)){ 
     echo 'Uploaded';  
     } 

     } else { 
      echo 'please choose a file'; 
      } 
    } 
    else{ 
     echo "name not set"; 
    } 
} 
else echo "FILES not set!"; 
?> 

Es gibt zwei Probleme, die ich bin vor:

  1. In alert(fileToUpload.name+","+fileToUpload.tmp_name);, fileToUpload.tmp_name wird unbestimmt.

  2. Das Hauptproblem besteht darin, dass in fu2.php Datei, in isset($_FILES["fileToUpload"])-false auswertet, weil ich FILES not set! als xhr.responseText bin immer.

Was mache ich hier falsch?

+0

form_data.append ('Datei', file_data); – Doug

+0

Deuten u Formdata-Objekt zu verwenden? –

Antwort

1

Hier sind die Fehler:

1). Sie verweisen auf einen nicht vorhandenen Komponentennamen. Es ist $_FILES["file"] nicht $_FILES["fileToUpload"]

2). Grundsätzlich sind Sie binäre Daten an den Server über Ajax zu übertragen, müssen Sie Mechanismus, um die Datei in lesbaren Stream wickeln Sie es erreicht werden kann FormData Objekt.

Hier fixiert ich Ihre Codes:

fu.html

<form action="fu2.php" method="POST" enctype="multipart/form-data"> 
    <input type="file" name="file" id="file"><br><br> 
    <input type="button" value="Upload" onclick="loadFile()"> 
</form> 
<script> 
    function loadFile() { 

     var myFileList = document.getElementById("file").files; 
     var fileToUpload = myFileList[0]; 

     var fd = new FormData(); 
     fd.append("file", fileToUpload); 
     alert(fileToUpload.name); 
     var xhr = new XMLHttpRequest(); 
     xhr.open("POST", 'http://10.192.44.143/pgadmsn/fu2.php',false); 
     xhr.send(fd); 
     alert(xhr.responseText); 
    } 
</script> 

fu.php

<?php 
if(isset($_FILES["file"])){ 
    $name = $_FILES["file"]["name"]; 
    $tmp_name = $_FILES['file']['tmp_name']; 

    if (isset ($name)) { 
     if (!empty($name)) { 

      $location = 'uploads/'; 

      if (move_uploaded_file($tmp_name, $location.$name)){ 
       echo 'Uploaded'; 
      } 

     } else { 
      echo 'please choose a file'; 
     } 
    } 
    else{ 
     echo "name not set"; 
    } 
} 
else echo "FILES not set!"; 
?> 
+0

Sie sind willkommen, ein Mann, froh, dass ich helfen könnte. –

+0

Ja bro, ich war buchstäblich Nüsse über diese gehen! –

+0

Wenn ich mich erinnere ich Ihre vorhergehende Frage sehe, ich zu der Zeit, sie beantworten wollte, aber plötzlich habe ich Probleme mit meiner Internetverbindung. : D –