带进度条的文件批量上传插件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>

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");
    }

}

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>

希望本文对你有帮助。

时间: 2024-08-01 13:02:54

带进度条的文件批量上传插件uploadify的相关文章

带进度条的文件上传

Ajax技术——带进度条的文件上传 1.概述 在实际的Web应该开发或网站开发过程中,经常需要实现文件上传的功能.在文件上传过程中,经常需要用户进行长时间的等待,为了让用户及时了解上传进度,可以在上传文件的同时,显示文件的上传进度条.运行本实例,如图1所示,访问文件上传页面,单击“浏览”按钮选择要上传的文件,注意文件不能超过50MB,否则系统将给出错误提示.选择完要上传的文件后,单击“提交”按钮,将会上传文件并显示上传进度. 2.技术要点 主要是应用开源的Common-FileUpload组件来

赞!带进度条的 jQuery 文件拖放上传插件

jQuery File Uploader 是一个 jQuery 文件拖放上传插件,包括 Ajax 上传和进度条效果.作者编写这个插件的想法是要保持它非常简单,不像其他的插件,很多的标记,并提供一些 Hack 的方式使之兼容那些古老的浏览器.jQuery File Uploader 重点是现代浏览器,而且还提供了一个方法让你知道什时候插件不支持使用. 立即下载      在线演示 jQuery File Uploader 是一个 jQuery 文件拖放上传插件,包括 Ajax 上传和进度条效果.作

jquery文件批量上传控件Uploadify3.2(java springMVC)

人比較懒  有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/  -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分flash版(免费)和html5版(收费). 官网上能够看到效果演示. 另外在网上找到了一份Uploadify3.2的中文API文档.能够在我上传的资源里面下载. 以下就是一个基于springMVC的文件上传演示样例,看起来可能比文档更直观一些··· 1.下载插件放到项目中 2.在jsp页面中引入下面JS和

SNF快速开发平台3.0之--文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)

实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制,客户端无刷新 可以对已经上传的附件进行名字变更,改成更友好的名称. 可以对已经上传的文件进行删除. 并记录文件大小,上传人.时间和修改人和时间等. 可以下载附件到本地电脑. 文件的在线预览,支持不安装office软件就可以预览(不管是图片还是office文档都得支持预览) 虽然比专业的图文档管理系统

七牛文件批量上传之自定义NSOperation

前言: 前阵子遇到七牛文件批量上传的问题,尝试了几种方案,现分享一种目前采用的方案--自定义operation. 为什么要自己实现七牛文件的批量上传 在使用七牛云存储服务的过程中,想要在手机客户端进行图片.视频等文件的上传,只需要直接引入SDK,然后使用QiniuSDK即可.对于iOS端的上传特别简单,只需要使用pod引入SDK: pod "Qiniu", "~> 7.0" 然后 #import <QiniuSDK.h> ... NSString

基于jQuery很牛X的批量上传插件

上传功能应该是每个网站必备的工具之一,因此出现了出现了很多各式各样的上传插件! 本文基于个人经验和使用从插件的:交互体验,易用性,文档,美观度出发,为大家推荐三款很NX的批量上传插件! 下面三款插件的特点:1.简单易配置,2.带进度条上传,3.可批量上传自定义格式文件 1.jQuery File Upload 官网:http://blueimp.github.com/jQuery-File-Upload/ 在线示例:http://blueimp.github.com/jQuery-File-Up

SWFUpload批量上传插件

SWFUpload是一个批量上传插件,在HTML4.1里面,估计也只有Flash+javascript配合才能够做到了.先复制个重要的网址,这个应该是官方的文档了,相当齐全. http://leeon.me/upload/other/swfupload.html#uploadStart 这个是格式比较好看的. http://www.cnblogs.com/2050/archive/2012/08/29/2662932.html 算了,这个文档的内容太多,各种属性各种方法,记不了这么多,直接贴上个

支持多文件上传的jQuery文件上传插件Uploadify

支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Flash,主要特性:支持多文件上传.HTML5版本可拖拽上传.实时上传进度条显示.强大的参数定制功能,如文件大小.文件类型.按钮图片定义.上传文件脚本等. Flash版本使用方法: 1.加载JS和CSS ? 1 2 3 <script src="jquery/1.7.1/jquery.min.js

强大的支持多文件上传的jQuery文件上传插件Uploadify

支持多文件上传的jQuery文件上传插件Uploadify,目前此插件有两种版本即Flash版本和HTML5版本,对于HTML5版本会比较好的支持手机浏览器,避免苹果手机Safari浏览器不支持Flash,主要特性:支持多文件上传.HTML5版本可拖拽上传.实时上传进度条显示.强大的参数定制功能,如文件大小.文件类型.按钮图片定义.上传文件脚本等. Flash版本使用方法: 1.加载JS和CSS ? 1 2 3 <script src="jquery/1.7.1/jquery.min.js