2011-11-28 68 views
0

现在,我使用下面的方法来上传文件到PHP上传到PHP服务器,使用Ajax(的XMLHTTP POST)

<form enctype="multipart/form-data" action="http://sserver.com/fileupload.php" method="POST"> 

<input type="hidden" name="MAX_FILE_SIZE" value="30000000" /> 
<input type="hidden" name="filename" value="file_uploaded.gif" /> 
<input type="hidden" name="username" value="foobar"/> 
Please choose a file: 
<input name="uploaded" type="file" /><br /> 
<input type="submit" value="Upload" /> 
</form> 

我读的$_POST和PHP $_FILE完成上传这样的。

$target = $_SERVER['DOCUMENT_ROOT']."/test/upload/"; 
$target = $target . basename($_FILES['uploaded']['name']) ; 
echo $target; 
$ok=1; 

if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{ 
echo "The file ". basename($_FILES['uploaded']['name']). " has been uploaded"; 
} 
else { 
echo "Sorry, there was a problem uploading your file."; 
} 

我的问题是,我可以改变上面说的代码(HTML)一个Ajax的XMLHttpRequest没有PHP变化。

回答

0

您无法通过AJAX单独将文件发送到服务器。这是因为Javascript(当在浏览器中运行时)无法访问主机的文件系统。

有许多方法可以使用iframe制作AJAX风格的上传框,其中整个页面在上载过程中不会重新加载,但这本身不是一项简单的任务。 jQuery提供了一些库,使这更容易。

编辑作为ThiefMaster正确地指出HTML5提供更加整齐这样的机制。

+0

您可以在最近的浏览器中通过AJAX上传文件。用户仍然需要选择文件。 – ThiefMaster

+0

@ThiefMaster true,据此编辑帖子。 – DaveRandom

相关问题