Jquery ajax上传文件

Jquery Ajax上传文件

主要实现文件上传到后端同时显示进度
ps. 上传文件数据格式必须为form-data

<form action="Handler2.ashx" method="post" enctype="multipart/form-data">
	<p>要上传的文件<input type="file" name="file1"/></p>
	<p><input type="submit" value="提交" /></p>
</form>

传统使用form表单提交文件会出现页面刷新的情况。我们不希望刷新浏览器,使用Ajax上传文件请求(异步)。
Ajax它提供了异步更新的机制,使用客户端与服务器间交换数据而非整个页面文档,实现页面的局部更新。

JS部分

//上传音频
$(function () {
    $("#upload").click(function () {
        var fd = new FormData();
        var file = document.getElementById('file1').files[0];
        uuid.innerHTML=uuid();
        //console.log(uuid());
        var mymd5=md5.innerHTML;
        console.log(mymd5);
        var myindex=uuid.innerHTML;
        //formdata数据
        fd.append("file",file);
        fd.append("md5",mymd5);
        fd.append("app_id","system");
        fd.append("app_secret","12345");
        fd.append("seq",myindex);
        console.log(fd.get("data"));
        $("#text").html("等待数据准备...");

        $.ajax({
            //上传服务器接口
            url: "xxxx",
            type: "POST",
            data: fd,
            async:true,
            contentType: false,
            processData: false,            
            xhr: function() { //用以显示上传进度  
                var xhr = $.ajaxSettings.xhr();
                if (xhr.upload) {
                    xhr.upload.addEventListener('progress', function(event){
                        var percent = Math.round(event.loaded / event.total * 100);
                        document.getElementById("progressNumber").innerHTML= percent.toString() + "%";
                        $("#upload").hide();
                    }, false); 
                }
                return xhr 
            },
            success: function (data) {
            console.log(data);
            $("#transform").show();
            $("#text").html("");
            if (data.status == "true") {
                alert("上传成功!");   
            }
            if (data.status == "error") {
                alert(data.msg);
            }
            },
            error: function () {
                alert("上传失败!");
            }
        })
    })    
});

代码中还使用了两项技术
1.md5
计算文件的MD5,防止服务端和客户端之间数据传输出现问题,校验文件的一致性和完整性
2.uuid(通用唯一识别码)
使上传的数据不产生冲突

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值