2013-11-23 128 views
0

所以我想通过上传发送每个文件到XMLHttpRequest的文件来绕过PHP中的max_post_size(因为我没有访问服务器的php.ini)。 我很喜欢PHP/JS,所以我可能错过了一些非常明显的东西。上传多个文件不起作用

我面临的问题是,文件没有上传和responseText的总打印...

现在这是我的代码的 “Hello World!”:

<?php 
if (isset($_FILES['myFile'])) { 
// Example: 
    move_uploaded_file($_FILES['myFile']['tmp_name'], "uploads/" . $_FILES['myFile']['name']); 
    echo "responseText???"; 
    exit; 
}?> 

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 

<input type="file" multiple="multiple" id="filesInput" /> <br/> 
<input type="button" id="uploadButton" value="Buton" /> 
<script type="text/javascript"> 

function sendFile(file) { 
    var uri = "/index.php"; 
    var xhr = new XMLHttpRequest(); 
    var fd = new FormData(); 

    xhr.open("POST", uri, true); 
    xhr.onreadystatechange = function() { 
     if (xhr.readyState == 4 && xhr.status == 200) { 
      // Handle response. 
      //alert(xhr.responseText); // This only prints Hello World...:/ 
     } 
    }; 
    fd.append('myFile', file); 
    // Initiate a multipart/form-data upload 
    xhr.send(fd); 
} 

$("#uploadButton").on("click", function(){ 
    var files = $('#filesInput').prop('files'); 
    var len = files.length; 
    for(var i=0; i<len; i++){ 
     $("#uploadFileNames").append(files[i].name + "<br/>"); 
     sendFile(files[i]); 
    } 
}); 

</script> 

PS:部分代码是从Mozilla的网站采取:

https://developer.mozilla.org/en-US/docs/Using_files_from_web_applications#Example:_Uploading_a_user-selected_file

+0

你真的可能发送一个普通的POST请求,而不是'multipart/form-data'吗? –

+0

根据这个:http://www.w3schools.com/ajax/ajax_xmlhttprequest_send.asp它确实发送一个POST请求。 评论从我从Mozilla网站复制的代码出现了。 –

回答

0

嗯,这对我来说很愚蠢。我有这个变量设置为:

var uri = "/index.php"; 

但我upload.php的文件是:/home/web_stuff/upload/index.php

所以它总是返回从文本:/首页/指数。 php,并找到了上传表格

我设置为“Hello,World!” (这使我最困惑,为什么它总是会返回Hello World)。

结论:问题出在php文件的路径上。