zoukankan      html  css  js  c++  java
  • Uploadify使用

       这几天一个项目中需要使用到上传文件,写入到数据库的操作,之前一同事自己做了一个上传功能,但对于大文件上传效率极低,并且度条显示不正确,后来让我重新做一个,起初是想自己使用AJAX做一个上传,然后在后台处理,把文件以流的方式读到内存,再从内存中写入到数据库,多文件时就会对服务器性能造成很大的影响,考虑到开发周期和项目进度就改用其它的方法,最终发现uploadify上使用方法,并且容易实现,所以改用uploadify,下面这几天使用uploadify的一些小的细节。

          

     1 <head id="Head1" runat="server">
     2     <title>Uploadify</title>
     3     <link href="JS/uploadify-v2.1.4/uploadify.css" rel="stylesheet" type="text/css" />
     4     <script src="JS/uploadify-v2.1.4/jquery-1.4.2.min.js" type="text/javascript"></script>
     5     <script type="text/javascript" src="JS/jquery.uploadify-v2.1.0/swfobject.js"></script>
     6     <script src="JS/uploadify-v2.1.4/jquery.uploadify.v2.1.4.min.js" type="text/javascript"></script>
     7     <script type="text/javascript">
     8         var vFileLimit = 5;                        
     9         $(document).ready(function () {
    10             $("#uploadify").uploadify({
    11                 'uploader': 'JS/uploadify-v2.1.4/uploadify.swf', //指定的swf文件
    12                 'script': 'UploadHandler.ashx', //指定后台处理文件的ashx
    13                 'cancelImg': 'JS/uploadify-v2.1.4/cancel.png',  //右上角取消按钮
    14                 'folder': 'UploadFile',//上传到指定的目录路径
    15                 'fileDesc': 'Wrod文档(*.doc,*.docx)|Excel文件(*.xls,*.xlsx)|图片文件(*.jpg;*.png;*.gif;*.bmp;*.jpeg;*.tiff;*.dwg)|压缩文件(*.zip;*.rar;*.7z)',    //提示选择哪些文件,‘|’可以把提示改为下拉列表多个选项
    16                 'fileExt': '*.doc;*.docx|*.xls,*.xlsx|*.jpg;*.png;*.gif;*.bmp;*.jpeg;*.tiff;*.dwg|*.zip;*.rar;*.7z',   //与fileDesc合用,一一对应,选择不同的选项可以过滤出来不同类型文件
    17                 'queueID': 'fileQueue',  //选择后文件所放位置
    18                 'auto': false,  //是否自动上传
    19                 'multi': true,   //是否支持多文件上传
    20                 'removeCompleted': false,  //上传完成后是否自动移除,默认为true
    21                 'sizeLimit': '41943041',   //上传文件大小限制单位字节
    22                 'queueSizeLimit': vFileLimit,  //最多文件个数限制
    23                 onInit: function () {         //启动时即调用
    24                     $('#aLimit').html(vFileLimit);
    25                 }, 
    26                 onError: function (event, queueId, fileObj, errorObj) { //出现错误时回调此方法
    27                     if (errorObj.type === 'File Size') {
    28                         alert("" + fileObj.name.split('.')[0] + "》超出大小限制,请让传小于40M的文件");
    29                     }
    30                 },
    31                 onQueueFull: function (event, queueLimit) {//队列中超出了queueSizeLimit时调用此方法
    32                     alert(queueLimit);
    33                     return false;  //省略此句会弹出默认的错误提示
    34                 }
    35                 , onFallback: function () {//未安装false时提示
    36                     alert("您未安装FLASH控件,无法上传!请安装FLASH控件后再试。");
    37                 },
    38                 onComplete: function (event, ID, fileObj, response, data) {//单个文件上传完成后提示
    39                     $('#' + ID).find('.data').html('上传完成');
    40                     alert("完成");
    41                 }, onAllCompleted:function(){//全部上传完成后提示
    42                     alert('已全部上传完成!');
    43 }
    44             });
    45         });
    46     </script>
    47 </head>
    48 <body>
    49     <div id="fileQueue"><!--选择文件后存放位置-->
    50     </div>
    51     <input type="file" name="uploadify" id="uploadify" />
    52     <p>
    53         <b id="aLimit"></b><a id="aid" href="javascript:$('#uploadify').uploadifyUpload()">上传</a>| <a href="javascript:$('#uploadify').uploadifyClearQueue()">
    54                 取消上传</a>
    55     </p>
    56 </body>

    后台处理:

        

     1 context.Response.ContentType = "text/plain";
     2             context.Response.Charset = "utf-8";
     3 
     4             HttpPostedFile file = context.Request.Files["Filedata"];
     5             string uploadPath =
     6                 HttpContext.Current.Server.MapPath(@context.Request["folder"]) + "\";
     7             int _iflen = file.ContentLength;
     8             byte[] buffer = new byte[_iflen];
     9             file.InputStream.Read(buffer, 0, _iflen - 1);
    10 
    11             if (file != null)
    12             {
    13                 if (!Directory.Exists(uploadPath))
    14                 {
    15                     Directory.CreateDirectory(uploadPath);
    16                 }
    17                 file.SaveAs(uploadPath + file.FileName);
    18                 //下面这句代码缺少的话,上传成功后上传队列的显示不会自动消失
    19                 context.Response.Write("1");
    20             }
    21             else
    22             {
    23                 context.Response.Write("0");
    24             }

    其它一些参数使用,请参见官网使用方法或其他园友的参数详解,这里不再赘述

    fileDesc和fileExt可再添加一个显示全部文件'*.*'

  • 相关阅读:
    Java第十次作业-房地产;学生成绩计算
    找回感觉之模拟房地产首付计算
    软件工程第四次作业—结对项目
    【作业】需要改进的用户体验二三则
    项目互测测试方式及报告
    [ASE]项目介绍及项目跟进——TANK BATTLE·INFINITE
    Hello World!
    [ASE]sprint3 总结 & sprint4计划
    [ASE][Daily Scrum]12.15
    [ASE][Daily Scrum]12.12
  • 原文地址:https://www.cnblogs.com/LeeYZ/p/3140098.html
Copyright © 2011-2022 走看看