通过XMLHttpRequest传递纯文本文件失败

时间:2014-02-12 21:47:08

标签: javascript php html xml

我正在尝试使用以下代码通过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 个答案:

答案 0 :(得分:1)

尝试将[“tmp_name”]添加到文件字符串中。所以:$file = $_FILES['thefile']['tmp_name'];

这将获取文件的临时位置。查看您的代码,其他一切似乎都很好。