先簡單的侃兩句:貌似已經有兩個月的時間沒有寫過文章了,不過仍會像以前那样每天至少有一至兩個小時是泡在园子裏看各位大神的文章。前些天在研究“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. scrapy 请求传参

    class MovieSpider(scrapy.Spider): name = 'movie' allowed_domains = ['www.id97.com'] start_urls = ['h ...

  2. Linux下 SpringBoot jar项目后台运行、查看、停用

    运行java jar: nohup java -jar **-0.0.1-SNAPSHOT.jar & 查看进程: 采用top或者ps aux命令.一般 如果后台是springboot,jar ...

  3. ie11 突然不能加载外部css 很神奇 头部改为 <!DOCTYPE> <html>

    <!DOCTYPE html> <html> 改为 <!DOCTYPE> <html>   OK了

  4. Redux的中间件Middleware不难,我信了^_^

    Redux的action和reducer已经足够复杂了,现在还需要理解Redux的中间件.为什么Redux的存在有何意义?为什么Redux的中间件有这么多层的函数返回?Redux的中间件究竟是如何工作 ...

  5. BZOJ 3144 切糕 最小割

    题意: 一个矩阵,每个格子分配一个数,不同的数字,代价不同,要求相邻格子数字差小等于d 求最小代价. 分析: 我猜肯定有人看题目就想到最小割了,然后一看题面理科否决了自己的这个想法…… 没错,就是最小 ...

  6. [GXOI/GZOI2019]与或和(单调栈)

    想了想决定把这几题也随便水个解题报告... bzoj  luogu 思路: 首先肯定得拆成二进制30位啊 此后每一位的就是个01矩阵 Q1就是全是1的矩阵个数 Q2就是总矩阵个数减去全是0的矩阵个数 ...

  7. 在springBoot的控制台打印sql语句

    在springBoot+Mybatis日志显示SQL的执行情况的最简单方法就是在properties新增: properties形式 logging.level.com.eth.wallet.mapp ...

  8. python链家网高并发异步爬虫and异步存入数据

    python链家网二手房异步IO爬虫,使用asyncio.aiohttp和aiomysql 很多小伙伴初学python时都会学习到爬虫,刚入门时会使用requests.urllib这些同步的库进行单线 ...

  9. MongoDB数据库的安装

    首先就是MongoDB的下载,可以去MongoDB官网进行下载,https://www.mongodb.com/download-center/community,也可以通过百度网盘直接下载, 链接: ...

  10. 谷歌浏览器添加Bing搜索引擎:

    谷歌浏览器添加Bing搜索引擎:   https://www.bing.com/search?q=%s&pc=MOZI&form=MOZLBR