2016-06-24 8 views
0

XMLHttpRequest()とPHPを使用してサーバーのフォルダにファイルをアップロードしようとしています。

  1. alert(fileToUpload.name+","+fileToUpload.tmp_name);、fileToUpload.tmp_nameで:私は直面しています2つの問題がある

    <?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!"; 
    ?> 
    

    <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> 
    

    PHPファイルfu2.phpがある:ここでは は、HTMLファイルfu2.htmlですは未定義になる。

  2. 大きな問題はisset($_FILES["fileToUpload"])falseに評価しているfu2.phpファイルで、私はxhr.responseTextとしてFILES not set!を取得していますので、ということです。

私はここで間違っていますか?

+0

form_data.append( 'ファイル'、file_data)。 – Doug

+0

FormDataオブジェクトの使用をお勧めしますか? –

答えて

1

ここに欠陥があります。

1)です。存在しないコンポーネント名を参照しています。それは$_FILES["file"]ない$_FILES["fileToUpload"]

2)です。基本的には、バイナリデータをAjax経由でサーバーに送信しています。ファイルを読み込み可能なストリームにラップするメカニズムが必要です。FormDataオブジェクトを使用して実現できます。

ここで私はあなたのコードを修正:

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

お元気ですか、助けてくれてうれしいです。 –

+0

うん、私は文字通りこれ以上のナッツをしていた! –

+0

私はあなたの以前の同様の質問を見たとき、私はそれに答えたいと思ったが、突然私はインターネット接続に問題がありました。 :D –

関連する問題