2014-02-12 3 views
0

Я пытаюсь отправить закачанный пользователем текстовый файл с помощью XMLHttpRequest со следующим кодом:Pass Plain Text File через XMLHttpRequest неудачу

HTML

<label for="file">Filename:</label> 
<input type="file" name="file" id="file"><br> 

Javascript

function Upload_Text() 
      { 
       var file = document.getElementById("file").files[0]; 
       var table_type = 2; 
       if (document.myform.Table_Name_Text[0].checked == true) {table_type = 1;} 
       var Choose_Class = document.getElementById("Choose_Class").value; 
       var formData = new FormData(); 
       var xmlhttp=new XMLHttpRequest(); 
       xmlhttp.onreadystatechange=function() 
       { 
        if (xmlhttp.readyState==4 && xmlhttp.status==200) 
        { 
         var result = xmlhttp.responseText; 
         alert(result); 

        } 
       } 
       var url = "Upload_Text.php"; 
       url = url + "?table_type="+table_type; 
       url = url + "&Choose_Class="+Choose_Class; 
       formData.append("thefile", file); 
       xmlhttp.open('POST', url, true); 
       xmlhttp.send(formData); 
       } 

Однако с следующий PHP-код, я не получаю никаких данных со стороны сервера текстового файла.

<?php 
$file = $_FILES['thefile']; 
$table_type=$_REQUEST["table_type"]; 
$Choose_Class=$_REQUEST["Choose_Class"]; 
$fh = fopen($file, 'r'); 
$theData = fread($fh, filesize($file)); 
fclose($fh); 
echo $theData; 
?> 

Любая помощь с этим будет замечательной, спасибо.

+1

Вы не можете загружать файлы с помощью AJAX легко. (Ну, вы можете с некоторыми трудностями с некоторыми браузерами, но я не нашел способ для IE, и каждый из них отличается. –

+0

вам лучше отправить форму – ImadOS

+0

Невозможно ли использовать объект FormData для обтекания текстового файла? –

ответ

1

Попробуйте добавить ["tmp_name"] к строке файла. Итак: $file = $_FILES['thefile']['tmp_name'];

Это позволит получить временное местоположение файла. Просматривая свой код, все остальное кажется прекрасным.

+0

Спасибо, сейчас именно то, что я хочу. –