zoukankan      html  css  js  c++  java
  • C# 结合html5 批量上传文件和图片预览

    html5 新特性 
     
     <input id="imgsf" type="file" name="imgsf" multiple  />
     
    input  file 中增加 multiple   属性可以选择多文件。IE9以下版本不兼容
     
     
        <form id="form1" method="post" action="upload_json.ashx" enctype="multipart/form-data">
        <div>
         <input id="imgsf" type="file" name="imgsf" multiple  />
            <input type="text" name="ceshi" value="panlitao" >
            <input type="submit" value="提交" />
        </div>
        </form>
     
     
    //预览js
     
      <div id="imgrq">
        </div>
         <script type="text/javascript">
          
     
     
             $("#imgsf").change(function () {
                 var filedx = 0;
                 for (var i = 0, j = this.files.length; i < j; i++) {
                     $("#imgrq").append("<img  src="" + window.URL.createObjectURL(this.files[i]) + "" width="100" height="100" />");
                 }
     
     
             });
     
     
        </script>
     
    C# 代码
     
     public class upload_json : IHttpHandler
        {
           // private HttpContext context;
     
     
            public void ProcessRequest(HttpContext context)
            {
                String aspxUrl = context.Request.Path.Substring(0, context.Request.Path.LastIndexOf("/") + 1);
     
     
                //文件保存目录路径
                String savePath = "attached/";
     
     
                //文件保存目录URL
                String saveUrl = aspxUrl + "attached/";
     
     
                //定义允许上传的文件扩展名
                Hashtable extTable = new Hashtable();
                extTable.Add("image", "gif,jpg,jpeg,png,bmp");
                //extTable.Add("flash", "swf,flv");
                //extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
                //extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2");
     
     
                //最大文件大小
                int maxSize = 1000000;
              //  this.context = context;
                String newFileName = "";
                for (int i = 0; i < context.Request.Files.Count;i++ )
                {
                    HttpPostedFile imgFile = context.Request.Files[i];
              
     
     
     
     
     
     
                    if (imgFile == null)
                    {
                        showError("请选择文件。");
                    }
     
     
                    String dirPath = context.Server.MapPath(savePath);
                    if (!Directory.Exists(dirPath))
                    {
                        showError("上传目录不存在。");
                    }
     
     
                    String dirName = context.Request.QueryString["dir"];
                    if (String.IsNullOrEmpty(dirName))
                    {
                        dirName = "image";
                    }
                    if (!extTable.ContainsKey(dirName))
                    {
                        showError("目录名不正确。");
                    }
     
     
                    String fileName = imgFile.FileName;
                    String fileExt = Path.GetExtension(fileName).ToLower();
     
     
                    if (imgFile.InputStream == null || imgFile.InputStream.Length > maxSize)
                    {
                        showError("上传文件大小超过限制。");
                    }
     
     
     
     
                    //修改为文件流去判断文件格式
                    // string exPath = mall_bll.Common.isfilltype(stream: imgFile.InputStream).ToLower();
     
     
                    //  if (exPath != "jpg" && exPath != "gif" && exPath != "bmp" && exPath != "png")
                    //   { showError("上传文件扩展名是不允许的扩展名。
    只允许" + ((String)extTable[dirName]) + "格式。"); }
     
     
                    //if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dirName]).Split(','), fileExt.Substring(1).ToLower()) == -1)
                    //{
                    //    showError("上传文件扩展名是不允许的扩展名。
    只允许" + ((String)extTable[dirName]) + "格式。");
                    //}
     
     
                    //创建文件夹
                    dirPath += dirName + "/";
                    saveUrl += dirName + "/";
                    if (!Directory.Exists(dirPath))
                    {
                        Directory.CreateDirectory(dirPath);
                    }
                    String ymd = DateTime.Now.ToString("yyyyMMdd", DateTimeFormatInfo.InvariantInfo);
                    dirPath += ymd + "/";
                    saveUrl += ymd + "/";
                    if (!Directory.Exists(dirPath))
                    {
                        Directory.CreateDirectory(dirPath);
                    }
     
     
                     newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff", DateTimeFormatInfo.InvariantInfo) + fileExt;
                    String filePath = dirPath + newFileName;
     
     
                    imgFile.SaveAs(filePath);
                }
                String fileUrl = saveUrl + newFileName;
     
     
                Hashtable hash = new Hashtable();
                hash["error"] = 0;
                hash["url"] = fileUrl;
                context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8");
             //   context.Response.Write(JsonMapper.ToJson(hash));
                context.Response.End();
            }
     
     
            private void showError(string message)
            {
                Hashtable hash = new Hashtable();
                hash["error"] = 1;
                hash["message"] = message;
             //   context.Response.AddHeader("Content-Type", "text/html; charset=UTF-8");
             //   context.Response.Write(JsonMapper.ToJson(hash));
           //     context.Response.End();
            }
     
     
            public bool IsReusable
            {
                get
                {
                    return true;
                }
            }
        }

  • 相关阅读:
    BZOJ 1499 NOI2005 瑰丽华尔兹 单调队列
    大整数乘法python3实现
    GPIO
    Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释
    TCP三次握手和四次挥手具体解释
    vector的成员函数解析
    Yii PHP Framework有用新手教程
    管道(Pipe)/createPipe
    android使用自己定义属性AttributeSet
    ASP连接sql server实例解析
  • 原文地址:https://www.cnblogs.com/cxsabc/p/10627656.html
Copyright © 2011-2022 走看看