最近项目使用了Uploadify一个上传插件,感觉的挺好用的。

上传控件:

引用JS

<script src='<% =ResolveUrl("~/JS/Uploadify/jquery.uploadify.js")%>' type="text/javascript"></script>

插件使用方法:

function UploadFY() {

var upload = {

'swf': '../JS/Uploadify/uploadify.swf',

'uploader': '../Ashx/FileOpHandler.ashx?Op=UploadFile&KGuid=' + Kguid + '&dType=SHPY_Files',

'buttonImg': '<% =ResolveUrl("~/JS/Uploadify/licon_001.gif")%>',

'cancelImg': '<% =ResolveUrl("~/JS/Uploadify/cancel.png")%>',

'queueID': Kguid,

'auto': true,

'multi': true,

'height': 22,

'width': 70,

'buttonText': '',

'fileTypeDesc': '系统支持文件',        // The description for file types in the browse dialog

'fileTypeExts': '*.doc;*.docx;*.xls;*.xlsx;*.pdf;*.rar;*.gd',

//需要重写的事件

'overrideEvents': ['onSelectError', 'onDialogClose'],

'multi': false,      //是否允许多选

'auto': true,       //是否允许自动上传

'method': 'GET',

'queueSizeLimit': 300,      //同时上传数量

'uploadLimit': 10000,        //一次浏览器课上成总数量

'fileSizeLimit': '10MB',   //单个文件大小设置

'sizeLimit': 4000000,

'onQueueComplete': function (file) {         //所有文件上传完成时触发此事件

},

'onSelect': function (file) {

//$('#fileupload').uploadifySettings('formData', { 'ASPSESSID': ASPSESSID, 'AUTHID': auth });

//alert(formDate);

fileName = file.name;

},

//返回一个错误,选择文件的时候触发

'onSelectError': function (file, errorCode, errorMsg) {

switch (errorCode) {

case -100:

alert("上传的文件数量已经超出系统限制的" + $('#fileupload').uploadify('settings', 'queueSizeLimit') + "个文件!");

return;

case -110:

alert("文件 [" + file.name + "] 大小超出系统限制的10MB大小!");

//  alert("文件 [" + file.name + "] 大小超出系统限制的" + $('#fileupload').uploadify('settings', 'fileSizeLimit') + "大小!");

return;

case -120:

alert("文件 [" + file.name + "] 大小超出系统限制的10MB大小!");

return;

case -130:

alert("文件 [" + file.name + "] 类型不正确!");

return;

default:

alert("文件 [" + file.name + "] 文件检查发生错误!");

return;

}

},

//检测FLASH失败调用

'onFallback': function () {

alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");

},

'width': 34, //文件选择按钮大小

'height': 22,

'removeCompleted': true,

'removeTimeout': 0.1,    //上传完成后自动消失时间/秒

'onQueueComplete': function (file) {         //所有文件上传完成时触发此事件

if (fileName.length > 100) {

alert("文件名过长!");

return;

}

$("#hdAttachmentName").val(fileName);

$("#hdAttachmentPath").val('/uploads/SHPY_Files' + '/' + Kguid + '/' + fileName);

$("#<%=DivFileLink.ClientID %>").html('<a href="javascript:void(0)" onclick="Down()" >' + fileName + '</a>&nbsp;&nbsp;<img src="../JS/Uploadify/cancel.png" align="middle"  onclick=DeleteFile() />');

}

}

return upload;

}

function LoadUpload() {

$("input[type='file']").each(function () {

$(this).uploadify((UploadFY()))

});

}

function Down() {

document.getElementById('btnDown').click();

}

function DeleteFile() {

$("#hdAttachmentName").val('');

$("#hdAttachmentPath").val('');

$("#<%=DivFileLink.ClientID %>").html('');

//此处可写触发删除文件

}

页面加载的时候调用:

LoadUpload();

FileOpHandler.ashx

上传代码:

private void UploadFile(HttpContext context)

{

try

{

HttpPostedFile file = context.Request.Files["Filedata"];

string KGuid = q(context, "KGuid");

string FileName = file.FileName;

int FileLength = file.ContentLength; ;

string FileType = file.FileName.Substring(file.FileName.LastIndexOf("."));

string CreateUserName = q(context, "CreateUserName");

string CreateUserID = q(context, "CreateUserID");

DateTime CreateDateTime = DateTime.Now;

string uploadPath = context.Server.MapPath("..\\uploads\\" + q(context, "dType") + "\\" + KGuid + "\\");

string FilePath = "..\\uploads\\" + q(context, "dType") + "\\" + KGuid + "\\" + FileName;

if (file != null)

{

if (!Directory.Exists(uploadPath))

{

Directory.CreateDirectory(uploadPath);

}

file.SaveAs(uploadPath + file.FileName);

//生成缩略图

}

context.Response.Write("1");

}

catch

{

context.Response.Write("0");

}

}

private string q(HttpContext context, string str)

{

if (context.Request[str] != null)

return context.Request[str].ToString();

return "";

}

public bool success

{

get;

set;

}

/// <summary>

/// Gets or sets the MSG.

/// </summary>

/// <value>The MSG.</value>

public string msg

{

get;

set;

}

/// <summary>

/// Gets or sets the public key.

/// </summary>

/// <value>The public key.</value>

public object data

{

get;

set;

}

文件下载:

protected void btnDown_Click(object sender, EventArgs e)

{

string filePath = Server.MapPath("../" + hdAttachmentPath.Value);

try

{

FileInfo info = new FileInfo(filePath);

if (!info.Exists)

{

Page.ClientScript.RegisterStartupScript(this.GetType(), "message", "$.messager.alert('消息提示', '文件不存在!', 'info');", true);

return;

}

long fileSize = info.Length;

Response.Clear();

Response.ContentType = "application/x-zip-compressed";

Response.AddHeader("Content-Disposition", "attachment;filename=" +HttpUtility.UrlEncode( info.Name));

//不指明Content-Length用Flush的话不会显示下载进度

Response.AddHeader("Content-Length", fileSize.ToString());

Response.TransmitFile(filePath, 0, fileSize);

Response.Flush();

Response.Close();

}

catch (Exception ex)

{

Page.ClientScript.RegisterStartupScript(this.GetType(), "message", "$.messager.alert('消息提示', " + ex.Message + ", 'info');", true);

}

}

Uploadify使用随笔的更多相关文章

  1. 基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  2. uploadify.js

    基于uploadify.js实现多文件上传和上传进度条的显示 uploadify是JQuery的一个插件,主要实现文件的异步上传功能,可以自定义文件大小限制.文件类型.是否自动上传等属性,可以显示上传 ...

  3. 上传组件uploadify的使用

    上传组件uploadify的使用 大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用& ...

  4. 基于MVC4+EasyUI的Web开发框架形成之旅(4)--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  5. asp.net(c#)开发中的文件上传组件uploadify的使用方法(带进度条)

    上文件传很常见,现在就文件上传利用HTML的File控件(uploadify)的,这里为大家介绍一下(uploadify)的一些使用方法.在目前Web开发中用的比较多的,可能uploadify(参考h ...

  6. (转)基于MVC4+EasyUI的Web开发框架形成之旅--附件上传组件uploadify的使用

    http://www.cnblogs.com/wuhuacong/p/3343967.html 大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随 ...

  7. ASP.NET Uploadify 上传文件过大报错

    Uploadify上传文件原来很早之前用过,没发现什么问题.今天再使用过程中,当文件大于30M的时候就会报错404.查看错误消息提示配置最大上传太小了.需要修改. 记得原来配置上传文件大小在这里:&l ...

  8. ASP.NET Uploadify 上传文件过大 报错(http error)借鉴,以防忘记

    Uploadify上传文件原来很早之前用过,没发现什么问题.今天再使用过程中,当文件大于30M的时候就会报错404.查看错误消息提示配置最大上传太小了.需要修改. 记得原来配置上传文件大小在这里:&l ...

  9. jquery.uploadify文件上传组件

    1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...

随机推荐

  1. python成长之路【第十三篇】:Python操作MySQL之pymysql

    对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎 ...

  2. ~/.config/user-dirs.dirs【桌面设置】

    # This file is written by xdg-user-dirs-update # If you want to change or add directories, just edit ...

  3. build.fxbuild打不开 Failed to create the part's controls

    Failed to create the part's controls 以文本形式打开之后,发现编码的地方不是常用编码 将之修改为GBK 然后就可以正常打开了 最后把eclipse中的编码统一设置为 ...

  4. Gevent中信号量的使用

    greenlet间同步方法:信号量 1.为什么引入信号量: 2.gevent信号量有哪些: 3.编程实现. 为何引入信号量 信号量是一个允许Greenlet相互合作,限制并发访问或运行的低层次的同步原 ...

  5. MyISAM与InnoDB区别

    两种类型最主要的差别就是Innodb 支持事务处理与外键和行级锁.而MyISAM不支持.所以MyISAM往往就容易被人认为只适合在小项目中使用. 我作为使用MySQL的用户角度出发,Innodb和My ...

  6. VMware虚拟机12安装linux系统

    http://jingyan.baidu.com/article/4f7d5712d20a1b1a21192760.html 阿里云开源镜像站:http://mirrors.aliyun.com/

  7. java, mybatis, 调用mysql存储过程

    Map<String, Object> bindinfo = new HashMap<String, Object>();            bindinfo.put(&q ...

  8. centos6.5安装lnmp环境

    1.安装nignx的源,默认cenots6没有的. rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-cent ...

  9. 7 -- Spring的基本用法 -- 3...

    7.3 Spring 的核心机制 : 依赖注入 Spring 框架的核心功能有两个. Spring容器作为超级大工厂,负责创建.管理所有的Java对象,这些Java对象被称为Bean. Spring容 ...

  10. API -- java.lang.Integer

    java.lang Class Integer static Integer valueOf(int i) Returns an Integer instance representing the s ...