最近项目使用了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. 程序设计入门——C语言 第8周编程练习 2GPS数据处理(6分)

    题目内容: NMEA-0183协议是为了在不同的GPS(全球定位系统)导航设备中建立统一的BTCM(海事无线电技术委员会)标准,由美国国家海洋电子协会(NMEA-The National Marine ...

  2. Struts2中Action的使用(Struts2_Action)

    一.Action概要 二.动态调用   三.通配符(规则:*_*等价于{1_2}) 四.获取参数 1 1.方式一:逐个获取(推荐使用) 2 package com.aaron.action.param ...

  3. dos2unix 命令

    最近在学习shell编程,可是在<Linux程序设计>指定的网站上下载了源码,使用的时候却一直出问题.提示:"bash: ./here1:/bin/sh^M:损坏的解释器: 没有 ...

  4. AxureRP8实战手册(基础21-30)

    AxureRP8实战手册(基础21-30) 本文目录 基础21.     设置元件默认选中/禁用 基础22.     设置单选按钮唯一选中 基础23.     设置元件不同状态时的样式 基础24.   ...

  5. centos7安装redis

    方法一:使用命令安装(前提是已经安装了EPEL). 安装redis: yum -y install redis 启动/停止/重启 Redis 启动服务: 1 systemctl start redis ...

  6. Java之数组了解

    一.什么是数组 数组可以理解为是一个巨大的“盒子”,里面可以按顺序存放多个类型相同的数据, 比如可以定义 int 型的数组 scores 存储 4 名学生的成绩: int[] scores={76,8 ...

  7. Lamp(Ubuntu 12.04 LTS) 之 htaccess的使用

    环境说明:Ubuntu 12.04 LTS Lamp (以apt方式分别安装) 一.明确目标:要确保.htaccess文件起作用,只需要三个重要点: 1.开启apache rewrite模块: (1) ...

  8. C++回溯法走迷宫

    #include <iostream> #include <iomanip> #include <cstdlib> using namespace std; #de ...

  9. ORACLE 误删除视图恢复

    1.使用 dba_views 回退到特定时间段,查看定义 select view_name,text from (select * From dba_views AS OF TIMESTAMP(SYS ...

  10. Microsoft.Office.Interop.Excel操作Excel文件时出现的问题及解决方案

    问题描述: Microsoft.Office.Interop.Excel.Worksheet 打不开文件 Microsoft Office Excel 不能访问文件"a.xls". ...