先簡單的侃兩句:貌似已經有兩個月的時間沒有寫過文章了,不過仍會像以前那样每天至少有一至兩個小時是泡在园子裏看各位大神的文章。前些天在研究“ajax無刷新上傳”方面的一些插件,用SWFUpload實現了無刷新上傳的功能,不過個人覺得不是很完美。

昨天在網上找到了一個叫做uploadify的jquery上傳插件,看到园子裏有幾篇文章也是介紹這個插件的,心想何不用這個試試。

不過园子裏的這幾篇文章用到的uploadify還是以前的舊版本uploadify-v2.1.0,我在官網上下載的是uploadify-v3.1版,其中的一些参數以及調用方法也不同了,還好官網有幫助文檔。

(唯一感覺不爽的一點就是這個開發包是針對php的,官網並沒有.NET版本,但至少原理都是一样的,簡單的修改一下就可以了。還是那句話“不僅要知其然,還要知其所以然”,知其所以然了,一切都是浮雲啊)

好了,廢話不多說。先上個效果圖,有圖有真相:

一:從官網下載開發包添加到項目中,我對這個開發包做了一個精簡,刪去了那些php方面的文件:

項目基本結構:

二:添加對css和js文件的引用:

注意jquery.js文件和uploadify.js文件的調用順序。

三:Default.aspx頁面的代碼如下:

<head runat="server">
    <title></title>
    <link href="js/uploadify/uploadify.css" rel="stylesheet" type="text/css" />
    <script src="js/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
    <script src="js/uploadify/jquery.uploadify-3.1.js" type="text/javascript"></script>
 <script type="text/javascript">
        $(function () {
            $("#uploadify").uploadify({
                //指定swf文件
                'swf': 'js/uploadify/uploadify.swf',
                //後台處理的頁面
                'uploader': 'UploadHandler.ashx',
                //按鈕顯示的文字
                'buttonText': '上傳圖片',
                //顯示的高度和寬度,默認 height 30;width 120
                //'height': 15,
                //'width': 80,
                //上傳文件的類型  默認为所有文件    'All Files'  ;  '*.*'
                //在瀏覽窗口底部的文件類型下拉菜單中顯示的文本
                'fileTypeDesc': 'Image Files',
                //允許上傳的文件後綴
                'fileTypeExts': '*.gif; *.jpg; *.png',
                //發送给後台的其他参數通過formData指定
                //'formData': { 'someKey': 'someValue', 'someOtherKey': 1 },
                //上傳文件頁面中,你想要用來作为文件隊列的元素的id, 默認为false  自動生成,  不帶#
                //'queueID': 'fileQueue',
                //選擇文件後自動上傳
                'auto': true,
                //設置为true將允許多文件上傳
                'multi': true
            });
        });
    
    </script>
</head>
<body>
    <div>
        <%--用來作为文件隊列區域--%>
        <div id="fileQueue">
        </div>
        <input type="file" name="uploadify" id="uploadify" />
        <p>
            <a href="javascript:$('#uploadify').uploadify('upload')">上傳</a>| 
            <a href="javascript:$('#uploadify').uploadify('cancel')">取消上傳</a>
        </p>
    </div>
</body>
</html>

四:一般處理程序UploadHandler.ashx簡單代碼如下:

public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            //http://go.rritw.com/www.cnblogs.com/babycool/
            //接收上傳後的文件
            HttpPostedFile file = context.Request.Files["Filedata"];
            //其他参數
            //string somekey = context.Request["someKey"];
            //string other = context.Request["someOtherKey"];
            //獲取文件的保存路徑
            string uploadPath =
                HttpContext.Current.Server.MapPath("UploadImages" + "\\");
            //判斷上傳的文件是否为空
            if (file != null)
            {
                if (!Directory.Exists(uploadPath))
                {
                    Directory.CreateDirectory(uploadPath);
                }
                //保存文件
                file.SaveAs(uploadPath + file.FileName);
               context.Response.Write("1");
            }
            else
            {
                context.Response.Write("0");
            }           }         public bool IsReusable
        {
            get
            {
                return false;
            }
        }

五:用到的参數介紹:

通過查看jquery.uploadify-3.1.js中的默認設置並参考官方文檔可得知:

参數不重新指定則保持默認:

swf:uploadify.swf 文件的相對路徑

uploader:後台處理程序的相對路徑

buttonText:按鈕顯示的文字

上傳文件的類型默認为所有文件  'All Files'    '*.*'

可以通過以下兩参數指定,指定方法見步驟三中的代碼:

fileTypeDesc;fileTypeExts;

auto:为true表示選擇文件後自動上傳;如果不想自動上傳,需設定为false,並通過

1 <a href="javascript:$('#uploadify').uploadify('upload')">上傳</a>| 
2 <a href="javascript:$('#uploadify').uploadify('cancel')">取消上傳</a>

來指定是上傳還是取消上傳;

multi:設置为true將允許多文件上傳;

method: 提交方式Post 或Get 默認为Post;

queueSizeLimit:當允許多文件上傳時,設置選擇文件的個數,默認值为999 ;

另外,取消上傳圖片的路徑是設置在css文件中的;

其他更多設置可以参考官網的幫助文檔。

還有一個需要注意的一點是:一般在設定了選擇上傳文件路徑時比如只允許上傳*.jpg;*.png;*.gif格式的圖片文件,則除了指定fileTypeDesc;fileTypeExts;兩個参數外,還要在服務器端即一般處理程序中再次對上傳文件的文件擴展名進行判斷,以防一些用戶跳過客戶端驗證上傳惡意文件。

下面附上我在博客园找到的那兩篇介紹uploadify的文章鏈接,供大家参考:

JQuery上傳插件Uploadify使用詳解

利用插件uploadify完成ajax效果的圖片上傳

並附上uploadify的官方網站

我整理的開發包:整理uploadify-v3.1.NET開發包

當然,這僅僅是一個簡單的試用,具體用到項目中還要考慮很多方面的問題。

歡迎各位大神多多指教,如果該文章對你有幫助大家可以一起討論討論。

轉載請注明出處。

jQuery無刷新上傳之uploadify簡單試用的更多相关文章

  1. jQuery无刷新上传之uploadify简单试用

    先简单的侃两句:貌似已经有两个月的时间没有写过文章了,不过仍会像以前那样每天至少有一至两个小时是泡在园子里看各位大神的文章.前些天在研究“ajax无刷新上传”方面的一些插件,用SWFUpload实现了 ...

  2. jQuery无刷新上传之uploadify

    引自 文章 http://www.cnblogs.com/babycool/archive/2012/08/04/2623137.html 将文章里的代码整合在了一个解决方案里,直接可以下载测试,上代 ...

  3. ASP.NET MVC使用jQuery无刷新上传

    昨晚网友有下载了一个jQuery无刷新上传的小功能,他尝试搬至ASP.NET MVC应用程序中去,在上传死活无效果.Insus.NET使用Teamviewer远程桌面,操作一下,果真是有问题.网友是说 ...

  4. jQuery无刷新上传学习心得

    记得刚离开大学,进入目前这家公司不到一个月时,有一位前辈给我们当时的新人讲了下JS无刷新上传的相关知识. 在此之前,一直都是在使用C#提供的服务器上传控件FileUpload,但是每次使用时,都会刷新 ...

  5. jquery 无刷新上传的小function

    function zll_up(click_id,up_url,text_id,show_id){ this.create = function(){} //当点击指定元素时,创建iframe for ...

  6. ThinkPHP3.2.2 无刷新上传插件uploadify 使用

    一. 在控制器中写一个方法,用于上传 public function upload(){ if (!empty($_FILES)) { //图片上传设置 $config = array( 'maxSi ...

  7. Jquery无刷新上传单个文件

    function ajax_photo(photo_type){        $(document).on('change','#sitephoto',function(){             ...

  8. C#_Jquery无刷新上传

    昨晚网友有下载了一个jQuery无刷新上传的小功能,他尝试搬至ASP.NET MVC应用程序中去,在上传死活无效果.Insus.NET使用Teamviewer远程桌面,操作一下,果真是有问题.网友是说 ...

  9. 將UNITY作品上傳到Facebook App!

    前言 大家好,今天要來介紹如何用UNITY 將製作好的遊戲上傳到Facebook,也就是Facebook App.近期Facebook與Unity合作而推出了新的插件,利用插件可上傳分數.邀請好友.P ...

随机推荐

  1. 使用Caliburn.Micro系列1:新建项目并引入CM

    一.WPF的几个MVVM模式实现 MVVMLight:小众的平民框架,实现简单粗暴.  pass:最近更新在15年 官网: http://www.mvvmlight.net/ 最近一篇内容全面的好文: ...

  2. CE工具里自带的学习工具--第四关

    图解:

  3. 服务器设置禁ping

    //设置Linux服务器禁ping!!!终端命令行直接输入 echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all 这个是关闭ping的命令. 如果你想要 ...

  4. php腾讯云短信验证码

    腾讯云短信控制台:https://console.cloud.tencent.com/sms 腾讯云短信 PHP SDK:https://github.com/qcloudsms/qcloudsms_ ...

  5. MFC线程获取主窗口句柄

    CWnd* h_q = AfxGetApp()->GetMainWnd(); //获取主窗口的句柄

  6. 实训day01 python基础

    一.编程语言 编程语言:可以被计算机所识别的表达方式. 编程:程序员通过编程语言将自己的想法编写出来,产生的结果就是包含字符的文件. 其中,只有程序在运行时,其中的字符才有特定的语法意义. 二.计算机 ...

  7. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (二) -- Topic Exchange 和 Fanout Exchange

    Topic Exchange 此模式下交换机,在推送消息时, 会根据消息的主题词和队列的主题词决定将消息推送到哪个队列. 交换机只会为 Queue 分发符合其指定的主题的消息. 向交换机发送消息时,消 ...

  8. Android突破64K限制

    1.添加依赖 android{ defaultConfig{ ... multiDexEnabled true ... } } dependencies{ compile 'com.android.s ...

  9. show()的几种方法

    1 show()方法和hide()方法 $("selector").show()  从display:none还原元素默认或已设置的display属性$("selecto ...

  10. [Thu Summer Camp2016]补退选

    题目描述不说了. 题解: Trie+vector…… Trie存学生,vector存答案. 极为无脑但无脑到让人怀疑 代码: #include<cmath> #include<vec ...