【ASP.NET】利用XMLHttpRequest实现将上传文件传递后台(Ajax技术)

$(document).ready(function(){
        $("#UploadFile").click(function () {
        //获取文件控件
        var file1 = document.getElementById("Upload_File1");
        //判断文件长度,从而确定是否有文件
        if (file1.value.length <= 0) {
            alert('请选择要上传的文件!');
            return false;
        }
        //限制文件大小是B为单位 4*1024为4KB,再*1024 即4MB
        if (file1.files[0].size > (4 * 1024 * 1024)) {
            alert('文件超过4M!');
            return false;
        }
        var formData = new FormData();
        formData.append("file1", $("#Upload_File1")[0].files[0]);
        formData.append("id", "100");
        var xhr = new XMLHttpRequest();
        xhr.open("post", "TeamResourcesManage.aspx", true);
        xhr.onload = function () {
            alert('上传完成');
        }
        //这里是添加一个进度监听,回调方法是第二个参数,会自动传递一个对象过来下面说明
        xhr.upload.addEventListener("progress", progressFunction, false);
        xhr.send(formData);
     });
      //evt是自动传递过来的参数
        function progressFunction(evt) {
            //一个<progressBar>标签
            var progressBar = document.getElementById("progressBar");
            //一个span用于显示百分比%
            var percentageDiv = document.getElementById("percentage");
            //是否在进行上传
            if (evt.lengthComputable) {
                //总数
                progressBar.max = evt.total;
                //当前进度
                progressBar.value = evt.loaded;            
                percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) + "%";
            }
        }
});

以上是JS部分,Upload_File1可以是input type="file" 或者是 asp:FileUpload,我用的是后者。

下面是后台的也给出来吧,前台就不需要了吧 

        protected void Page_Load(object sender, EventArgs e)
        {
            //注意:不要加if(!IsPostBack)判断!
            //file1这个是上面设置FormData的参数名,必须一致!其中Request.Files[]是文件相关的在里面
            //Request["id"]是普通类型参数在里面,例如:int string ...
            HttpPostedFile file = HttpContext.Current.Request.Files["file1"];
            int id = int.Parse(HttpContext.Current.Request["id"]);
            if (file != null)
            {
                //上传文件流
                Stream stream = file.InputStream;
                int l = file.ContentLength;
                byte[] fileByte = new byte[l];
                stream.Read(fileByte, 0, l);
                stream.Close();
                //文件名
                string filename = file.FileName;
                //文件后缀.xxx
                string suffix = filename.Substring(filename.LastIndexOf('.'));
  
            }
        }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值