zoukankan      html  css  js  c++  java
  • jQuery多图上传Uploadify插件使用及传参详解

    因为工作需要,这两天接触到了Uploadify插件,由于是第一次用,花了我近一天的时间。下面我把我在用这个插件过程详细的分享出来,也让自己巩固一下,也希望能帮助到你。

    所需文件:

    jquery-1.8.2.min.js (可以低版本
    uploadify.css
    swfobject.js

    uploadify.swf
    jquery.uploadify.js

    uploadify-cancel.png(一张取消图片)

    先看下效果:

    1.界面

     

                                图1-1

    2.选择多张图片后:

    说明:叉叉图标的路径要改(CSS文件),不然不会显示叉叉图标。点击这个图标,标示这个图片取消上传)

                                     图1-2

    3.上传一张图片后:

    (执行的是'onUploadSuccess')方法

       

    上传完毕后:

    (执行的是onQueueComplete方法)

    ---------------------------------------分界线-------------------------------------

    js代码:

    <head runat="server">
        <title runat="server" id="title">上传图片</title>
    
        <script src="../js/addpic/jquery-1.8.2.min.js" type="text/javascript"></script>
        <link href="../js/addpic/uploadify.css" type="text/css" rel="Stylesheet" />
        <script type="text/javascript" src="../js/addpic/swfobject.js"></script>
        <script type="text/javascript" src="../js/addpic/jquery.uploadify.js"></script>
    
    <script type="text/javascript">
        var icount = 0;
     
        $(function() {
            var imgnum = 0;
            $('#custom_file_upload').uploadify({
                'buttonClass': 'submit',
                'swf': '../js/addpic/uploadify.swf',//!!!一定要注意改这个路径
                'uploader': 'UploadHandler.ashx',
                'multi': true,      //是否允许多选
                'auto': false,       //是否允许自动上传
                'fileTypeExts': '*.jpg;*.gif;*.png;*.pdf',
                'fileTypeDesc': 'Image Files (.JPG, .GIF, .PNG, .PDF)',
                'queueID': 'custom-queue',
                'queueSizeLimit': 100,      //允许同时上传文件数量
                'uploadLimit': 1000,        //允许上传文件总数,指打开一次浏览器
                'fileSizeLimit': '1MB',   //限制单个文件大小,限制IIS大小请到Web.Config修改
                'buttonText': '选择图片',
    
                'formData': { "name": '', "remark": '', 'flag': '' },//往后台传的参数  传参
                'removeCompleted': true,    //上传完成后是否自动消失
    
                'onUploadStart': function(file) {
    
                    $("#custom_file_upload").uploadify("settings", "formData", { 'name': $('#name').val(), 'remark': $('#remark').val(), 'flag': $('#flag').val() });//给参数赋值
    
                },
                
                  onError: function(event, queueID, fileObj)   
                    {    
                     alert("图片:" + fileObj.name + " 上传失败");    
                    },
                'onQueueComplete': function(file) {         //所有文件上传完成时触发此事件
                    icount = 0;
                    alert('上传完毕!');
                    window.close();
                },
                'onUploadSuccess': function(file, data, response) {//上传每个完成事件
    
                   alert("图片:" + file.name+ data ); //data是返回值
                }
    
            });
    
    
        });
    //这个方法是点击上传按钮检测一下用户输入的图片名称是否为空,为空的话,直接返回false
        function star() {
            var name = $('#name').val();
            var name = $('#name').val();
            if (name.replace(/s/g, '') == '') {
                alert("名称不能为空!");
                return false;
            } 
            $('#custom_file_upload').uploadify('upload', '*');
        }
    </script>
    </head>

    js中遇到的问题:

    1  在js如果要往一般处理程序中传递参数的话怎么做?

          如js代码中的  这两句代码,就是往一般处理程序传值的代码,他们是一一对应的。

    'formData': { "name": '', "remark": '', 'flag': '' },//往后台传的参数  传参
     $("#custom_file_upload").uploadify("settings", "formData", { 'name': $('#name').val(), 'remark': $('#remark').val(), 'flag': $('#flag').val() });//给参数赋值
        

    其它的一些参数可以自己网上查查,可以尝试赋不同的值的效果。

    html代码:

    <form runat="server" id="form1" method="post" class="uploads" >
    
        <div>
            <ul class="sitemappath">
                <li style="height: 21px"><strong>上传公司图片(*为必填项)</strong></li>
            </ul>
        </div>
       
            <table style=" 567px; height: 103px;" cellpadding="1" cellspacing="1" 
                class="table_default table_green">
                <tr>
                    <th class="style9"  >
                        *图片名称:
                    </th>
                    <td class="style8" >
                        <input id="name" type="text" vmode="not null" runat="server" maxlength="25"
                            style=" 215px"/>
                    </td>
                 
                     <th class="style5" >
                        是否有效:
                    </th>
                    <td class="style10" >
                        <asp:CheckBox ID="flag" runat="server" Checked="true" />
                    </td>
                </tr>
                <tr>
                    <th class="style7" >
                        图片描述:
                    </th>
                    <td colspan="1"  class="style6">
                         <textarea id="remark" name="remark" style=" 427px; height: 86px"
                            runat="server"></textarea>
                    </td>
                    
                     
                </tr>
                <tr>
                       <th class="style3"  >
                        *图片位置:
                    </th>
                    <td colspan="1"  class="style4"  >  
                      <dd>
                            <div class="select_photo">
                                   <input id="custom_file_upload" type="file" name="Filedata"/><!--选择图片的按钮 -->
                            <div id="custom-queue"><!--选择完图片展示的下拉框,如图1-2 -->
                            </div>
                        </dd>
                    </td>
                  <td colspan="2" class="style4"  >
                         <font color="red">大小:小于1M 
                         <br />
                         格式:gif、bmp、png</font> </td>
                </tr>
                <tr>
                    <td colspan="4" align="right">
                      <div class="upload_submit">
                    <input type="hidden" name="imgPath" value="" id="imgPaths" />
                    <input name="" type="button" id="sub" value="上传" class="submit" onclick="javascript:star();" /><!--调用上传方法 -->
                </div>
    
                    </td>
                </tr>
            </table>
        </form>

    后台代码:

            Photo o = new Photo();
            HttpPostedFile file = context.Request.Files["Filedata"];//准备参数
            o.upload_time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
           
            o.name = context.Request["name"];  //获取前台传的参数      
            o.remark = context.Request["remark"];
            o.flag = context.Request["flag"] == "on" ? true : false;
    
            if (file!=null)//判断文件是否为空
            {
                string strOldName = file.FileName.Trim();//原始文件名
                string strNewName = DateTime.Now.ToString("yyyyMMddHHmmss")+CommonBLL.GetStreamMD5(file.InputStream)+ "." + strOldName.Substring(strOldName.LastIndexOf(".") + 1); //产生图片文件名
                string strFileSize = file.ContentLength.ToString(); //获取图片大小
                string filepath = "uploadpic";
              
                    if (CommonBLL.SaveFile(file, strNewName, filepath))//保存图片的方法
                    {
                        o.file_name = strNewName;
                        if (AdminHelperBLL.AddPhoto(o) > 0)//保存到数据库
                        {
                            context.Response.Write("上传成功");                      
                        }
                        else
                        {
    
                            context.Response.Write("上传失败,请重试!");
                           
                        }
    这个插件的使用方法算是很详细了,这个插件网上可以下载,后台代码设计的有图片处理,缩略图等,所以没贴完(缩略图代码将另写一遍博文),忘谅解。
    现在觉得jQuery用法很多都很相似,以前用过SWF_Upload和这个方法也很类似。
    我是一个小菜鸟,如有不足,还希望各位大神指出。谢谢你们!
     
     
     
  • 相关阅读:
    工厂模式
    dubbo
    WebSocket WebService
    消息中间
    原型模式
    ApiPost Apifox
    Future 的使用与源码解析
    JUC 线程池的使用与源码解析
    ReentrantLock 源码解析
    CountDownLatch 的使用与源码解析
  • 原文地址:https://www.cnblogs.com/guohuiru/p/3435592.html
Copyright © 2011-2022 走看看