我有以下简单的网页,可用于上传任何文件:
<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>
我确切地检查了文件有多大,但是100 KB文件上传成功,而2 MB文件失败。 Wireshark显示浏览器只是中途停止发送文件包,并发送FIN标志。服务器回复HTTP状态代码200和PHP错误3,表明该文件仅部分上载。最新版本的IE和Chrome的结果相同。
有人可以解释为什么会这样,解决方案是什么?感谢。