Javascript 使用html表单发布文件是可行的,但使用XMLHttpRequest它会被截断
我有以下用于上传任何文件的简单网页:Javascript 使用html表单发布文件是可行的,但使用XMLHttpRequest它会被截断,javascript,php,html,ajax,xmlhttprequest,Javascript,Php,Html,Ajax,Xmlhttprequest,我有以下用于上传任何文件的简单网页: <html> <head> </head> <body> <form action="upload_file.php" method="post" enctype="multipart/form-data"> <input type="file" name="filefield" id="filefield"><br> <button type="s
<html>
<head>
</head>
<body>
<form action="upload_file.php" method="post" enctype="multipart/form-data">
<input type="file" name="filefield" id="filefield"><br>
<button type="submit">submit</button>
</form>
</body>
</html>
提交
以下Ajax版本只适用于非常小的文件:
<html>
<head>
</head>
<body>
<script>
function postForm() {
var xhttp = new XMLHttpRequest();
var formData = new FormData();
formData.append("filefield", document.getElementById("filefield").files[0]);
xhttp.open("POST", "upload_file.php", true);
xhttp.send(formData);
}
</script>
<form>
<input type="file" name="filefield" id="filefield"><br>
<button onclick="postForm()">submit</button>
</form>
</body>
</html>
函数postForm(){
var xhttp=newXMLHttpRequest();
var formData=new formData();
formData.append(“filefield”,document.getElementById(“filefield”).files[0]);
open(“POST”,“upload_file.php”,true);
xhttp.send(formData);
}
提交
我没有检查一个文件到底有多大太大,但是一个100KB的文件上传成功,而一个2MB的文件上传失败。Wireshark显示浏览器只是中途停止发送文件包,并发送一个FIN标志。服务器回复HTTP状态代码200和PHP错误3,表明文件仅部分上载。IE和Chrome的最新版本的结果是相同的
有人能解释为什么会发生这种情况,解决办法是什么吗?谢谢。这只会在你工作时发生?也许中间的代理不喜欢大请求?请检查@Halcyon no这也发生在我的家庭网络上,这是不受限制的,而且这也不能解释为什么HTML表单post可以工作,这是同样的大请求。@Joe Black谢谢,我已经这样做了,以避免PHP错误1。但错误3和浏览器截断帖子是另一个问题。请尝试以下解决方案: