Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用html表单发布文件是可行的,但使用XMLHttpRequest它会被截断_Javascript_Php_Html_Ajax_Xmlhttprequest - Fatal编程技术网

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和浏览器截断帖子是另一个问题。请尝试以下解决方案: