• 异步带进度条——提交文件


    前台代码:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title></title>
        <style type="text/css">
            #div1{300px;height:30px;border:1px solid #000;position:relative;}
            #div2{0px;height:30px;background:#CCC;}
            #div3 {
                 300px;
                height: 30px;
                line-height: 30px;
                text-align: center;
                position: absolute;
                left:0px;top:0px;
            }
        </style>
    </head>
    <body>
     <input type="file" id="file"/><input type="button" id="btnFile" value="上传" />
       <!--进度条-->
        <div id="div1">
            <div id="div2"></div>
            <div id="div3">0%</div>
        </div>
     
    </body>
    </html>
    <script type="text/javascript">
        var file = document.getElementById("file");
        var btnFile = document.getElementById("btnFile");
        var div1 = document.getElementById("div1");
        var div2 = document.getElementById("div2");
        var div3 = document.getElementById("div3");
        
        btnFile.onclick = function () {
            var xml = new XMLHttpRequest();
            xml.onload = function () {
                alert(xml.responseText);
            }
            //上传进度条事件
            var oUpload = xml.upload;        
            oUpload.onprogress = function (ev) {
                //console.log(ev.total + ":" + ev.loaded);//ev.loaded是已经上传的 ev.total是总的
                var iScale = ev.loaded / ev.total;//计算出比例
                div2.style.width = 300 * iScale + "px";
                div3.innerHTML = iScale*100 + "%";
            }
    
            xml.open("post", "HandlerFiles.ashx", true);
            xml.setRequestHeader('X-Request-Width', 'XMLHttpRequest');
            var oFormData = new FormData();       
            oFormData.append("file",file.files[0]);      
            xml.send(oFormData);
        }
    </script>
    

    后台代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    
    namespace Ajax无刷新上传
    {
        /// <summary>
        /// HandlerFiles 的摘要说明
        /// </summary>
        public class HandlerFiles : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.ContentType = "text/plain";
                int rec = context.Request.Files.Count;
                if (context.Request.Files.Count > 0)
                {
                    HttpPostedFile  files = context.Request.Files[0];
                    if (files.ContentLength > 0)
                    {
                        int n=files.ContentLength;
                        string fileName = files.FileName;
                        files.SaveAs(context.Request.MapPath("files/"+Guid.NewGuid().ToString()+"_"+fileName));
                        context.Response.Write("上传完毕!");
                        context.Response.End();
                    }
                    else { context.Response.Write("选择的文件不能小于0字节"); context.Response.End(); }
    
                    
                }
                else {
                    context.Response.Write("请先选择上传文件");
                    context.Response.End();
                }
    
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    }
    

      

    GitHub项目链接:https://github.com/shuai7boy/AjaxUploadFiles

  • 相关阅读:
    泛型
    java unicode补充字符带来的码点和代码单元问题
    GIT相关
    Html5 Canvas学习
    解决animate动画连续播放bug
    自定义对象级别的组件开发
    关于常用却忘记的css,jQuery
    json格式初涉
    ajax
    jquery.validation.js的自定义方法
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/5576199.html
Copyright © 2020-2023  润新知