• 带进度条的文件批量上传插件uploadify


    有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案。

    先上效果图:

    一. 下载uploadify

    从官网下载uploadify的Flash版本(Flash版本免费,另一版本HTML5版本需要付费)

    下载地址: http://www.uploadify.com/download/

    下载后直接把文件解压,然后放在项目中

    二. 在项目中使用

    在页面中引入:

        <!--引入Jquery-->
        <script src="js/jquery-1.11.3.min.js"></script>
        <!--引入uploadify-->
        <script type="text/javascript" src="uploadify/jquery.uploadify.js"></script>
        <link type="text/css" href="uploadify/uploadify.css" rel="stylesheet" />

    完整页面代码

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    
    <!DOCTYPE html>
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <title>文件批量上传Demo</title>
        <!--引入Jquery-->
        <script src="js/jquery-1.11.3.min.js"></script>
        <!--引入uploadify-->
        <script type="text/javascript" src="uploadify/jquery.uploadify.js"></script>
        <link type="text/css" href="uploadify/uploadify.css" rel="stylesheet" />
    
        <script type="text/javascript">
            $(function () {
                var guid = '<%=Request["guid"] %>';
                var type = '<%=Request["type"] %>';
                if (guid == null || guid == "") {
                    guid = newGuid();
                }
                if (type != null) {
                    type = type + '/';
                }
    
                $('#file_upload').uploadify({
                    'swf': 'uploadify/uploadify.swf',              //FLash文件路径
                    'buttonText': '浏  览',                        //按钮文本
                    'uploader': 'uploadhandler.ashx?guid=' + guid, //处理ASHX页面
                    'formData': { 'folder': 'picture', 'isCover': 1 },         //传参数
                    'queueID': 'fileQueue',                        //队列的ID
                    'queueSizeLimit': 10,                          //队列最多可上传文件数量,默认为999
                    'auto': false,                                 //选择文件后是否自动上传,默认为true
                    'multi': true,                                 //是否为多选,默认为true
                    'removeCompleted': true,                       //是否完成后移除序列,默认为true
                    'fileSizeLimit': '0',                          //单个文件大小,0为无限制,可接受KB,MB,GB等单位的字符串值
                    'fileTypeDesc': 'All Files',                   //文件描述
                    'fileTypeExts': '*.*',                         //上传的文件后缀过滤器
                    'onQueueComplete': function (queueData) {      //所有队列完成后事件
                        alert("上传完毕!");
                    },
                    'onError': function (event, queueId, fileObj, errorObj) {
                        alert(errorObj.type + "" + errorObj.info);
                    },
                    'onUploadStart': function (file) {
                    },
                    'onUploadSuccess': function (file, data, response) {   //一个文件上传成功后的响应事件处理
                        //var data = $.parseJSON(data);//如果data是json格式
                        //var errMsg = "";
                    }
    
                });
            });
    
            function newGuid() {
                var guid = "";
                for (var i = 1; i <= 32; i++) {
                    var n = Math.floor(Math.random() * 16.0).toString(16);
                    guid += n;
                    if ((i == 8) || (i == 12) || (i == 16) || (i == 20))
                        guid += "-";
                }
                return guid;
            }
    
            //执行上传
            function doUpload() {
                $('#file_upload').uploadify('upload', '*');
            }
        </script>
    
    </head>
    <body>
        <form id="form1" runat="server" enctype="multipart/form-data">
            <div id="fileQueue" class="fileQueue"></div>
            <div>
                <input type="file" name="file_upload" id="file_upload" />
                <p>
                    <input type="button" class="shortbutton" id="btnUpload" onclick="doUpload()" value="上传" />
                    &nbsp;&nbsp;&nbsp;&nbsp;
                    <input type="button" class="shortbutton" id="btnCancelUpload" onclick="$('#file_upload').uploadify('cancel')" value="取消" />
                </p>
                <div id="div_show_files"></div>
            </div>
        </form>
    </body>
    </html>
    View Code

    UploadHandler.ashx代码

    using System;
    using System.Web;
    using System.IO;
    
    public class UploadHandler : IHttpHandler {
        
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "text/plain";
            context.Request.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("UTF-8");
            context.Response.Charset = "UTF-8";
    
            if (context.Request.Files.Count > 0)
            {
                #region 获取上传路径
                string uploadFolder = GetUploadFolder();
                #endregion
    
                if (System.IO.Directory.Exists(uploadFolder))
                {//如果上传路径存在
                    HttpPostedFile file = context.Request.Files["Filedata"];
                    string filePath = Path.Combine(uploadFolder, file.FileName);
                    file.SaveAs(filePath);
                    context.Response.Write("0");
                }
                else
                {
                    context.Response.Write("2");
                }
            }
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
        /// <summary>
        /// 返回不带后缀的文件名
        /// </summary>
        /// <param name="fileName"></param>
        /// <returns></returns>
        public static string GetFirstFileName(string fileName)
        {
            return Path.GetFileNameWithoutExtension(fileName);
        }
    
        /// <summary>
        /// 获取上传目录
        /// </summary>
        /// <returns></returns>
        public static string GetUploadFolder()
        {
            string rootPath = HttpContext.Current.Server.MapPath("~");
            return Path.Combine(rootPath, "test");
        }
    
    }
    View Code

    Demo下载

    三. 延伸和总结

    文件上传.NET默认有大小限制,像IIS限制的30M默认请求大小。如果不想修改IIS,又想突破这个大小限制,比如上传1GB大小的文件。

    这时修改Web.config即可实现

    <?xml version="1.0" encoding="utf-8"?>
    
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    
    <configuration>
    
        <system.web>
          <compilation debug="true" targetFramework="4.0" />
          <httpRuntime maxRequestLength="1073741824"/>
        </system.web>
    
        <!--用于设置文件上传的最大允许大小(单位:bytes)-->
        <system.webServer>
          <security>
            <requestFiltering>
              <!--修改服务器允许最大长度(1GB)-->
              <requestLimits maxAllowedContentLength="1073741824"/>
            </requestFiltering>
          </security>
        </system.webServer>
      
    </configuration>

    希望本文对你有帮助。

  • 相关阅读:
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
    xcode6+ios8最新真机调试教程
    新手学习ios开发的辅助工具
    IOS事件传递之hitTest:withEvent
    <转>Singletons in Objective-C
    iOS机身振动提醒
    (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode
    对数组进行排序
    字符串去掉空格问题
    NSArray排序方法
  • 原文地址:https://www.cnblogs.com/hangwei/p/4886982.html
Copyright © 2020-2023  润新知