关于无刷新实现文件上传

相信AJAX对于大家而言,并不陌生,但怎么利用他上传文件却鲜有人试过,其实,通过无刷新上传文件至少有两种方式。

1、传统的方式

    <form method="post" target="frame">
        <iframe name="frame"></iframe>
        <input type="file" name="test" />
        <button type="submit"></button>
    </form>

重点在于form里面的target和iframe里面的name相同,此时提交会直接提交到iframe里面,会造成iframe刷新,如果将其大小设置为无法可见,则实现文件上传功能。

2、AJAX功能

通常大家使用都是用来传递可序列化为字符串的东西,但实际上有一个对象,类型是FormData,他可以实现传递文件。

            var formData = new FormData(); //创建一个虚拟的Form
            formData.append('fileName', file); //添加文件         
            var xhr = getHttpRequest();//获取AJAX对象
            xhr.open("POST", url);//必须POST
            xhr.upload.onprogress = function(e){//处理过程
                //e.total和e.loaded,表示一共需要上传的大小和已经上传的文件大小
            };
            xhr.onreadystatechange = function () {//上传情况
                //如果有返回值了
                if (xhr.status && xhr.readyState && xhr.status == 200 && xhr.readyState == 4) {
                    //上传完成,回调
  
                };
            };
            //不能有这一行,否则失败,因为上传文件不能使用会被编码的类型
            //xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.send(formData);//发送

 

posted @ 2015-09-26 03:07  YumiaoChow  阅读(231)  评论(0编辑  收藏  举报