JQuery异部上传多个文件

来源:未知 责任编辑:智问网络 发表时间:2013-11-04 19:50 点击:

这个例子需要用到JQuery和一个JQuery插件ajaxupload.js,不说太多。直接上代码:

前台:



<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
   <script src="Scripts/ajaxupload.js" type="text/javascript"></script> 
 <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
    <script src="Scripts/ajaxupload.js" type="text/javascript"></script>

<script type="text/javascript"> 
       $(document).ready(function () { 
           new AjaxUpload('#buttonUpload', { 
               action: 'Handler2.ashx', 
               data: { Folder: 'commodity', Count: $("#hidd_imgCount").val() }, 
               onSubmit: function (file, ext) { 
                   $("#loading").show(); 
                   if (!/^(jpg|bmp|png|gif)$/.test(ext)) { 
                       alert("只能上传格式为(bmp、jpg、png、gif)格式的图片!"); 
                       return false; 
                   } 
                   //判断上传图片的数量  
                   var imgCount = $("#hidd_imgCount").val(); 
                   if (parseInt(imgCount) >= 5) { 
                       alert("最多只能上传5张图片!"); 
                       $("#loading").hide(); 
                       return false; 
                   } 
                   this.disable(); 
               }, 
               onComplete: function (file, response) { 
 
                   $("#loading").hide(); 
                   this.enable(); 
                   var responseText = response.toString(); 
                   if (/MSIE 6.0/i.test(navigator.userAgent)) { 
                       responseText = getCookies(); 
                   } 
                   //显示1  
                   var reArray = responseText.split('|'); 
                   if (reArray[0] == "1") { 
                       alert("上传的文件不能大于4MB!"); 
                       return false; 
                   } 
                   else if (reArray[0] == null || reArray[0] == "") { 
                       alert("上传失败!"); 
                       return false; 
                   } 
                   else { 
                       var param = reArray[1]; 
                       if (reArray.length >= 3) { 
                           param += "|" + reArray[2]; 
                       } 
                       var divDocument = "<div id=\"" + reArray[1].substring(0, reArray[1].lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + file + "     <a href=\"javascript:;\" onclick=\"delAttach('" + param.toString() + "','" + file + "');\">删除</a>" + "</div>"; 
                       $("#div_Result").append(divDocument); 
                   } 
                   //用于记录,上传的图片  
 
                   document.getElementById("hidd_UploadFiles").value += param + "%" + file + "&"; 
                   var imgCount = $("#hidd_imgCount").val(); 
                   $("#hidd_imgCount").val(parseInt(imgCount) + 1); 
               } 
           }); 
       }); 
       function delAttach(param, showName) { 
           $.ajax({ 
               url: "RemoveImage.ashx?ID=" + param, 
               success: function (result) { 
                   if (result.toString() != "false") { 
                       $("#div_Result").remove("#" + result); 
                       $("#" + result).replaceWith(""); 
                       //移除内容,同时更新Hidd  
                       var oldVal = $("#hidd_UploadFiles").val(); 
                       var newVal = oldVal.replace(param + "%" + showName + "&", ""); 
 
                       $("#hidd_UploadFiles").val(newVal); 
                       var imgCount = $("#hidd_imgCount").val(); 
                       $("#hidd_imgCount").val(imgCount - 1); 
                   } 
               } 
           }); 
       } 
 
       //当点击Submit引发回调,且并没有提交成功,引发回调时,重新载入上传UploadFiles部分  
       function reloadUpFiles() { 
           var hidd = $("#hidd_UploadFiles").val(); 
           if (hidd != "") { 
               var arrayFiles = hidd.split('&'); 
               $("#div_Result").html(""); 
               for (var i = 0; i < arrayFiles.length; i++) { 
                   if (arrayFiles[i].toString().length > 0) { 
                       var aFile = arrayFiles[i].split('%'); 
                       var sysName = aFile[0].toString(); 
                       var showName = aFile[1].toString(); 
                       var divDocument = "<div id=\"" + sysName.substring(0, sysName.lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + showName + "   <a href=\"javascript:;\" onclick=\"delAttach('" + sysName + "','" + showName + "');\">删除</a>" + "</div>"; 
                       $("#div_Result").append(divDocument); 
                   } 
               } 
           } 
       } 
       function getCookies() { 
           var cookies = document.cookie; 
           var innerText = cookies.substring(cookies.lastIndexOf('ImgResponse=') + 12, cookies.lastIndexOf('{1}')); 
           return innerText; 
       } 
lt;/script> 
 <script type="text/javascript">
        $(document).ready(function () {
            new AjaxUpload('#buttonUpload', {
                action: 'Handler2.ashx',
                data: { Folder: 'commodity', Count: $("#hidd_imgCount").val() },
                onSubmit: function (file, ext) {
                    $("#loading").show();
                    if (!/^(jpg|bmp|png|gif)$/.test(ext)) {
                        alert("只能上传格式为(bmp、jpg、png、gif)格式的图片!");
                        return false;
                    }
                    //判断上传图片的数量
                    var imgCount = $("#hidd_imgCount").val();
                    if (parseInt(imgCount) >= 5) {
                        alert("最多只能上传5张图片!");
                        $("#loading").hide();
                        return false;
                    }
                    this.disable();
                },
                onComplete: function (file, response) {

                    $("#loading").hide();
                    this.enable();
                    var responseText = response.toString();
                    if (/MSIE 6.0/i.test(navigator.userAgent)) {
                        responseText = getCookies();
                    }
                    //显示1
                    var reArray = responseText.split('|');
                    if (reArray[0] == "1") {
                        alert("上传的文件不能大于4MB!");
                        return false;
                    }
                    else if (reArray[0] == null || reArray[0] == "") {
                        alert("上传失败!");
                        return false;
                    }
                    else {
                        var param = reArray[1];
                        if (reArray.length >= 3) {
                            param += "|" + reArray[2];
                        }
                        var divDocument = "<div id=\"" + reArray[1].substring(0, reArray[1].lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + file + "     <a href=\"javascript:;\" onclick=\"delAttach('" + param.toString() + "','" + file + "');\">删除</a>" + "</div>";
                        $("#div_Result").append(divDocument);
                    }
                    //用于记录,上传的图片

                    document.getElementById("hidd_UploadFiles").value += param + "%" + file + "&";
                    var imgCount = $("#hidd_imgCount").val();
                    $("#hidd_imgCount").val(parseInt(imgCount) + 1);
                }
            });
        });
        function delAttach(param, showName) {
            $.ajax({
                url: "RemoveImage.ashx?ID=" + param,
                success: function (result) {
                    if (result.toString() != "false") {
                        $("#div_Result").remove("#" + result);
                        $("#" + result).replaceWith("");
                        //移除内容,同时更新Hidd
                        var oldVal = $("#hidd_UploadFiles").val();
                        var newVal = oldVal.replace(param + "%" + showName + "&", "");

                        $("#hidd_UploadFiles").val(newVal);
                        var imgCount = $("#hidd_imgCount").val();
                        $("#hidd_imgCount").val(imgCount - 1);
                    }
                }
            });
        }

        //当点击Submit引发回调,且并没有提交成功,引发回调时,重新载入上传UploadFiles部分
        function reloadUpFiles() {
            var hidd = $("#hidd_UploadFiles").val();
            if (hidd != "") {
                var arrayFiles = hidd.split('&');
                $("#div_Result").html("");
                for (var i = 0; i < arrayFiles.length; i++) {
                    if (arrayFiles[i].toString().length > 0) {
                        var aFile = arrayFiles[i].split('%');
                        var sysName = aFile[0].toString();
                        var showName = aFile[1].toString();
                        var divDocument = "<div id=\"" + sysName.substring(0, sysName.lastIndexOf('.') - 1) + "\" class=\"div_upfiles\">" + showName + "   <a href=\"javascript:;\" onclick=\"delAttach('" + sysName + "','" + showName + "');\">删除</a>" + "</div>";
                        $("#div_Result").append(divDocument);
                    }
                }
            }
        }
        function getCookies() {
            var cookies = document.cookie;
            var innerText = cookies.substring(cookies.lastIndexOf('ImgResponse=') + 12, cookies.lastIndexOf('{1}'));
            return innerText;
        }
</script>CSS:



<style type="text/css"> 
       .div_upfiles 
       { 
           background-image: url('images/img.jpg'); 
           background-repeat: no-repeat; 
           height: 14px; 
           padding-left: 20px; 
           font: normal 12px Verdana; 
           padding-top: 1px; 
           margin-bottom: 5px; 
           color: #0A3761; 
       } 
       .btn_delete 
       { 
           border: solid 0px white; 
           background-color: White; 
       } 
   </style> 
 <style type="text/css">
        .div_upfiles
        {
            background-image: url('images/img.jpg');
            background-repeat: no-repeat;
            height: 14px;
            padding-left: 20px;
            font: normal 12px Verdana;
            padding-top: 1px;
            margin-bottom: 5px;
            color: #0A3761;
        }
        .btn_delete
        {
            border: solid 0px white;
            background-color: White;
        }
    </style>
HTML代码:



<div id="loading" style="display: none;"> 
           <img src="images/loading.gif"></div> 
       <div id="div_Result"> 
       </div> 
       <input type="button" id="buttonUpload" value="上传" /> 
<span style="white-space:pre">    </span><asp:HiddenField ID="hidd_UploadFiles" runat="server" /> 
       <asp:HiddenField ID="HiddenField1" runat="server" Value="0" /> 
       <input id="hidd_imgCount" type="hidden" value="0" /> 
 <div id="loading" style="display: none;">
            <img src="images/loading.gif"></div>
        <div id="div_Result">
        </div>
        <input type="button" id="buttonUpload" value="上传" />
 <span style="white-space:pre"> </span><asp:HiddenField ID="hidd_UploadFiles" runat="server" />
        <asp:HiddenField ID="HiddenField1" runat="server" Value="0" />
        <input id="hidd_imgCount" type="hidden" value="0" />然后是两个异部提交的文件:\

 

上传文件后台代码:



public class Handler2 : IHttpHandler 

 
    public void ProcessRequest(HttpContext context) 
    { 
        System.Threading.Thread.Sleep(2000); 
        string oldName = context.Request.Files["userfile"].FileName; 
 
        string type = oldName.Substring(oldName.LastIndexOf('.')); 
        string Count = context.Request["Count"].ToString(); 
        string strFileName = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Guid.NewGuid() + DateTime.Now.Ticks.ToString(), "MD5") + Count + type; 
        string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower(); 
        string folder = context.Request["Folder"].ToString(); 
        int bytes = context.Request.Files[0].ContentLength; 
        //如果,上传的文件大于4MB的话,抛消息出来  
        if (bytes > 4 * 1024 * 1024) 
        { 
            ResponseWriteEnd(context, "1"); 
        } 
 
        string strLocation = string.Empty; 
 
        if (string.IsNullOrEmpty(folder)) 
        { 
            strLocation = (context.Server.MapPath("uploadFiles") + ("//" + strFileName)); 
        } 
        else 
        { 
            //判断 目录 是否存在。。不存在则创建  
            string path = context.Server.MapPath("uploadFiles/" + folder + "/"); 
            if (!Directory.Exists(path)) 
            { 
                Directory.CreateDirectory(path); 
            } 
            strLocation = path + ("//" + strFileName); 
        } 
        context.Request.Files[0].SaveAs(strLocation); 
 
        context.Response.ContentType = "text/plain"; 
 
        string ResponseString = "0|" + strFileName + (!string.IsNullOrEmpty(folder) ? "|" + folder : ""); 
 
        ResponseWriteEnd(context, ResponseString); 
 
    } 
    /// <summary>  
    /// 用于输出流,并终止流  
    /// </summary>  
    /// <param name="context">HttpContext</param>  
    /// <param name="msg">你输出流信息</param>  
    private void ResponseWriteEnd(HttpContext context, string msg) 
    { 
        context.Response.Write(msg); 
        context.Response.Cookies["ImgResponse"].Value = msg + "{1}"; 
        context.Response.End(); 
    } 
public class Handler2 : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        System.Threading.Thread.Sleep(2000);
        string oldName = context.Request.Files["userfile"].FileName;

        string type = oldName.Substring(oldName.LastIndexOf('.'));
        string Count = context.Request["Count"].ToString();
        string strFileName = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(Guid.NewGuid() + DateTime.Now.Ticks.ToString(), "MD5") + Count + type;
        string strExtension = Path.GetExtension(context.Request.Files[0].FileName).ToLower();
        string folder = context.Request["Folder"].ToString();
        int bytes = context.Request.Files[0].ContentLength;
        //如果,上传的文件大于4MB的话,抛消息出来
        if (bytes > 4 * 1024 * 1024)
        {
            ResponseWriteEnd(context, "1");
        }

        string strLocation = string.Empty;

        if (string.IsNullOrEmpty(folder))
        {
            strLocation = (context.Server.MapPath("uploadFiles") + ("//" + strFileName));
        }
        else
        {
            //判断 目录 是否存在。。不存在则创建
            string path = context.Server.MapPath("uploadFiles/" + folder + "/");
            if (!Directory.Exists(path))
            {
                Directory.CreateDirectory(path);
            }
            strLocation = path + ("//" + strFileName);
        }
        context.Request.Files[0].SaveAs(strLocation);

        context.Response.ContentType = "text/plain";

        string ResponseString = "0|" + strFileName + (!string.IsNullOrEmpty(folder) ? "|" + folder : "");

        ResponseWriteEnd(context, ResponseString);

    }
    /// <summary>
    /// 用于输出流,并终止流
    /// </summary>
    /// <param name="context">HttpContext</param>
    /// <param name="msg">你输出流信息</param>
    private void ResponseWriteEnd(HttpContext context, string msg)
    {
        context.Response.Write(msg);
        context.Response.Cookies["ImgResponse"].Value = msg + "{1}";
        context.Response.End();
    }
删除文件后台代码:



public class RemoveImage : IHttpHandler 

 
    public void ProcessRequest(HttpContext context) 
    { 
        context.Response.ContentType = "text/plain"; 
        string parameters = context.Request.QueryString["ID"].ToString(); 
        var ParamArray = parameters.Split('|'); 
        string filename = ParamArray[0]; 
        string Path = ""; 
        string Folder = string.Empty; 
        if (ParamArray.Length > 1) 
        { 
            Folder = ParamArray[1]+ "/"; 
        } 
        Path = context.Server.MapPath("uploadFiles/" + Folder + "" + filename); 
        if (File.Exists(Path)) 
        { 
            File.Delete(Path); 
            ResponseWriteEnd(context, filename.Substring(0, filename.LastIndexOf('.') - 1)); 
        } 
        else 
        { 
            ResponseWriteEnd(context, "false"); 
        } 
    } 
 
    /// <summary>  
    /// 用于输出流,并终止流  
    /// </summary>  
    /// <param name="context">HttpContext</param>  
    /// <param name="msg">你输出流信息</param>  
    private void ResponseWriteEnd(HttpContext context, string msg) 
    { 
        context.Response.Write(msg); 
        context.Response.End(); 
    } 
public class RemoveImage : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        string parameters = context.Request.QueryString["ID"].ToString();
        var ParamArray = parameters.Split('|');
        string filename = ParamArray[0];
        string Path = "";
        string Folder = string.Empty;
        if (ParamArray.Length > 1)
        {
            Folder = ParamArray[1]+ "/";
        }
        Path = context.Server.MapPath("uploadFiles/" + Folder + "" + filename);
        if (File.Exists(Path))
        {
            File.Delete(Path);
            ResponseWriteEnd(context, filename.Substring(0, filename.LastIndexOf('.') - 1));
        }
        else
        {
            ResponseWriteEnd(context, "false");
        }
    }

    /// <summary>
    /// 用于输出流,并终止流
    /// </summary>
    /// <param name="context">HttpContext</param>
    /// <param name="msg">你输出流信息</param>
    private void ResponseWriteEnd(HttpContext context, string msg)
    {
        context.Response.Write(msg);
        context.Response.End();
    }

运行结果如下图:
\


 

如果需要源码的朋友可以到:http://www.2cto.com/uploadfile/2011/1227/20111227031233817.rar
进行下载

 摘自 Silverlight4.0开发_Silverlight4.0学习_Silverlight4.0例子
 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • 浅析.NET下XML数据访问新机制
    • asp.net 面试+笔试题目第1/2页
    • C# 邮件地址是否合法的验证
    • C#高级编程:数据库连接[1]
    • asp.net 设置GridView的选中行的实现代码
    • 经典C++程序1
    • IIS 自动回收导致后台定时器失效的问题解决
    • ASP.NET&#160;GridView列表代码示例
    • 微软ASP.NET站点部署指南(3):使用Web.Config文件的Transforma
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1