日期:2014-05-16  浏览次数:20470 次

求助如何用XMLHttpRequest传送文件?
我如果直接用表格提交的话可以传送文件,但是如果使用下面的XMLHttpRequest传送的话却无法传送为啥呢???

JScript code
 $(
            function()
            {
                var progressBar = document.querySelector("#progressBar");
                var file = document.querySelector("#file");
                    file.onchange = function(){

                                                };//onchange
                
                $("#MainBoard #submit").click( function(){

                    if(file.files[0])
                    {
                        $("#progressBar").css("display","inline");
                        $("#MainBoard input").attr("disabled","disabled");
                        var xhr = new XMLHttpRequest();
                        if(xhr)
                        {
                            xhr.open('POST','mySpace_addFile.php');
                            //soit utilise xhr.onreadystatechange
                            if(xhr.readyState == 1)//1==Opened
                            {
                                xhr.onload = function(){
                                                            if(xhr.readyState==4)
                                                                alert("Upoload over");
                                                            else
                                                                alert("Error in upload");
                                                            $("#progressBar").css("display","none");
                                                            $("#MainBoard input").removeAttr("disabled");
                                                        };//onload
                                xhr.upload.onprogress = function(e){
                                                            progressBar.value = e.loaded;
                                                            progressBar.max = e.total;
                                };//onprogres

                                var form = new FormData();
                                form.append('new_file', file.files[0]);//这个是文件,应该在$_FILES里
                                form.append('anti_multipl',$("anti_multipl").val());//这个是变量,应该在$_POST里
                                xhr.send(form);
                            }else{
                                alert("Cannot open server for upload");
                            }
                        }
                    }
                    
                });//click
            });//ready


------解决方案--------------------
估计xhr做不了这个,
这个应该算作无刷新上传文件
记得以前看到有动态过建一个iframe让那个iframe以 提交文件的方式上传..网上应该有很多这类的库文件,

2用flash模块上传..

------解决方案--------------------
ajax不能上传文件
enctype="multipart/form-data" 
并不是ajax post的形式