jQuery通过HTML5实现异步上传文件实例



jQuery通过HTML5实现异步上传文件实例。判断文件的大小与类型的方法。这个示例是HTML5通过Ajax和jQuery异步上传文件:

<script type="text/javascript" src="jquery-1.8.3.min.js"></script>

<form enctype="multipart/form-data">
  <input name="file" type="file" />
  <input type="button" value="Upload" />
</form>
<progress></progress>
<script>
$(':file').change(function(){
    var file = this.files[0];
    name = file.name;
    size = file.size;
    type = file.type;
    //你的验证代码,比较超出上传大小限制啦,文件类型不对啦什么的
});

$(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $.ajax({
        url: 'upload.php',  //上传的服务器URL,upload.php内容参考下方代码
        type: 'POST',
        xhr: function() {
            var myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false);
            }
            return myXhr;
        },
        //Ajax 事件
        beforeSend: beforeSendHandler,
        success: completeHandler,
        error: errorHandler,
        // Form data
        data: formData,
        cache: false,
        contentType: false,
        processData: false
    });
});

function progressHandlingFunction(e){
    if(e.lengthComputable){
        $('progress').attr({value:e.loaded,max:e.total});
    }
}
function beforeSendHandler(){
	// 这里写上传前的一些代码,显示提示语言或滚动条什么的
}
function completeHandler(){
	// 这里写上上传结束后的一些代码
}
function errorHandler(){
	// 这里写上错误提示
}
</script>