jQuery上传插件-uploadify3.1使用说明

uploadify ,简单实用的flash上传组件,兼容性良好。 现已有html5版本。

官方地址:http://www.uploadify.com/

官方英文文档:http://www.uploadify.com/documentation/

Demos    Download

 使用方法(.net版本):

 前台JS

$("#id").uploadify({
          height: 30,
swf: '/uploadify/uploadify.swf',
uploader: '/Handler/uploadPic.ashx',
width: 120,
cancelImg: '/uploadify/uploadify-cancel.png',
buttonText: '选择图片',
fileTypeExts: '*.gif;*.jpg;*.jpeg;*.png',
'fileSizeLimit': '6000KB',
removeCompleted: false,
'formData': {
"id":"1"
},
onUploadSuccess: function (file, data, response) {//上传完成时触发(每个文件触发一次)
if (data.indexOf('错误提示') > -1) {
alert(data);
}
else {
//$("#previewImage").attr("src", data.substr(2)).hide().fadeIn(2000);
alert("上传成功!");
}
},
'onUploadError': function (file, errorCode, errorMsg, errorString) {//当单个文件上传出错时触发
alert('文件:' + file.name + ' 上传失败: ' + errorString);
}
    });

 

 ASHX文件:

         


protected string AllowExt = "7z|aiff|asf|avi|bmp|csv|doc|docx|fla|flv|gif|gz|gzip|jpeg|jpg|mid|mov|mp3|mp4|mpc|mpeg|mpg|ods|odt|pdf|png|ppt|pptx|pxd|qt|ram|rar|rm|rmi|rmvb|rtf|sdc|sitd|swf|sxc|sxw|tar|tgz|tif|tiff|txt|vsd|wav|wma|wmv|xls|xlsx|xml|zip";//支持的文件格式 
         

int FileMaxSize = 10240;//文件大小,单位为Kpublicvoid ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string ParentID = context.Request.Params["id"];
            HttpPostedFile fileUpload = context.Request.Files[0];
            if (fileUpload != null)
            {
                try
                {
                    string UploadDir = "~/upload/";//图片保存的文件夹
                    
//图片保存的文件夹路径
                    string path = context.Server.MapPath(UploadDir);
                    //每天上传的图片一个文件夹
                    string folder = DateTime.Now.ToString("yyyyMM");
                    //如果文件夹不存在,则创建
                    if (!Directory.Exists(path + folder))
                    {
                        Directory.CreateDirectory(path + folder);
                    }
                    //上传图片的扩展名
                    string fileExtension = fileUpload.FileName.Substring(fileUpload.FileName.LastIndexOf('.'));
                    //判断文件格式
                    if (!CheckValidExt(fileExtension))
                    {
                        context.Response.Write("错误提示:文件格式不正确!" + fileExtension);
                        return;
                    }
                    //判断文件大小
                    if (fileUpload.ContentLength > FileMaxSize * 1024)
                    {
                        context.Response.Write("错误提示:上传的文件(" + fileUpload.FileName + ")超过最大限制:" + FileMaxSize + "KB");
                        return;
                    }
                    //保存图片的文件名
                    
//string saveName = Guid.NewGuid().ToString() + fileExtension;
                    
//使用时间+随机数重命名文件
                    string strDateTime = DateTime.Now.ToString("yyMMddhhmmssfff");//取得时间字符串
                    Random ran = new Random();
                    string strRan = Convert.ToString(ran.Next(100999));//生成三位随机数
                    string saveName = strDateTime + strRan + fileExtension;

                    Model.Album uc = new Model.Album();

                    uc.Title = fileUpload.FileName;
                    uc.ImagePath = folder + "/" + saveName;
                    uc.PostTime = DateTime.Now; 
                    uc.Pid= int.Parse(id);
                    bll.Album alb = new bll.Album();
                    alb.add(uc);

                    //保存图片
                    fileUpload.SaveAs(path + folder + "/" + saveName);
                    context.Response.Write(UploadDir + folder + "/" + saveName);
                }
                catch
                {
                    context.Response.Write("错误提示:上传失败");
                }

            }

        }


        public bool IsReusable
        {
            get
            {
                return false;
            }
        }

        #region 检测扩展名的有效性 bool CheckValidExt(string sExt) 
        /// <summary>
        
/// 检测扩展名的有效性
        
/// </summary>
        
/// <param name="sExt">文件名扩展名</param>
        
/// <returns>如果扩展名有效,返回true,否则返回false.</returns>
        public bool CheckValidExt(string strExt)
        {
            bool flag = false;
            string[] arrExt = AllowExt.Split('|');
            foreach (string filetype in arrExt)
            {
                if (filetype.ToLower() == strExt.ToLower().Replace("."""))
                {
                    flag = true;
                    break;
                }
            }
            return flag;
        }
        #endregion

 

 参数说明

参考 http://www.cnblogs.com/luohu/archive/2011/12/16/2290135.html#commentform

 

3.1 版本更新 : 去除postData,更改为formData。  Json数据。  其他更改研究中。

 

上传文件生成缩略图,将缩略图以data为参数传回页面显示到准备好的容器中。

onUploadSuccess: function (file, data, response) {//上传完成时触发(每个文件触发一次)
                    if (data.indexOf('错误提示') > -1) {
                        alert(data);
                    }
                    else {
                        //$("#previewImage").attr("src", data.substr(2)).hide().fadeIn(2000);
                        alert("上传成功!");
                        jQuery("#albumList").append("<img src='"+data+"' />");

                    }
                },
                'onUploadError': function (file, errorCode, errorMsg, errorString) {//当单个文件上传出错时触发
                    alert('文件:' + file.name + ' 上传失败: ' + errorString);} 

       

参考: http://www.cnblogs.com/luohu/archive/2011/12/16/2290135.html#commentform

 

 

转载于:https://www.cnblogs.com/lucker/archive/2012/06/15/2550823.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《关键对话——掌握关键对话》读书笔记(二)

《关键对话——掌握关键对话》读书笔记(二) 上一节中我们已经定义了关键对话&#xff0c;在面对关键对话时&#xff08;比如老板给你安排了一项非常不合适的任务&#xff09;&#xff0c;你的选择可能只有如下两种&#xff1a; 1.当面表示反对&#xff0c;把老板惹怒 2.沉默接…

信息流推荐多样性

信息流推荐多样性 一、问题现状 信息流产品中一个常见的问题是多样性越来越差&#xff0c;造成这种问题的原因在于机器学习算法本身。下面通过一副系统循环图来介绍多样性差的问题。 资讯库随机推荐文章&#xff0c;由于是按照全库比例采样&#xff0c;娱乐占比较大&#xf…

Robocode教程2——你的第一个robo,取个好名字哦

摘自&#xff1a;http://site.douban.com/widget/notes/7736245/note/210029011/ 你需要准备的东西&#xff1a;1.c语言的知识和一点点的java知识&#xff0c;robocode意在学习java&#xff0c;不要要太深的java水平&#xff0c;你只要理解java和c的区别就可以了。2.robocode A…

《关键对话——从“心”开始,如何确定目标》读书笔记(三)

从“心”开始&#xff0c;如何确定目标、 我们的问题并不是行为本身是错误的&#xff0c;而是我们的动机有问题&#xff0c;即我们常常弄错要面对的目标。 一、从心开始 对话高手总是能做到从心开始。在开展高风险对话时&#xff0c;他们总是首先明确目的和动机&#xff0c;无…

UI设计师的面试过程

Palantir Technologies是一家提供分析、整合、可视化各种数据的IT型技术公司。在该公司&#xff0c;前端工程师和后端工程师有同样的面试过程&#xff0c;前端工程师也需要的一定的编程基础。该公司技术博客Palantir TeckBlog日前发表了一篇博文《The UI Design Interview》&am…

C语言代码实现数组(简单)

前一节课讲了数组的删除功能实现&#xff1a;删除功能 本节课内容我们实现数组的反转功能和冒泡排序功能&#xff1a; #include <stdio.h> #include <string.h> #include <malloc.h> #include <stdlib.h>struct Arr{int * pBase; //存储数组第一个元…

数据在市场运营中的应用

数据在市场运营中的应用 1. 背景 目前的产品运营、用户拉新、渠道投放、留存等都是靠人工进行策略制定&#xff0c;有的公司和部门完全靠着以前的经验在尝试互联网产品的市场营销和运营。这样不仅效率很低&#xff0c;而且效果也不显著。 主要存在的问题有以下几点&#xff…

C语言的typedef用法

案例1&#xff1a; #include <stdio.h> #include <string.h> #include <malloc.h>typedef int zhangsan; //为int在多取一个名字 zhangsan等价于intstruct Student{int sid;char sname[100];char sex;} ST;int main() {int i 10; //等价于zhangsan i10…

信息流项目计划和思路

目录 一、对项目的认识. 4 1&#xff0e;用户需求和竞品. 4 2. 项目现状. 4 3. 发展前景. 4 二、项目的业务方向和思路. 6 1. 业务方向. 6 2. 2020年目标. 6 3. 思路. 6 3.1用户留存提升&#xff08;6%->12%&#xff09;. 6 3.2日活提升&#xff08;30万->80万…

MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中&#xff0c;N指的是字符的长度,VARCHAR类型最大支持65535,指的是65535个字节,但并不支持65535长度的varchar&#xff0c;65535中应该包含了所有字段的长度、变长字段长度标示…

数据结构链表知识入门

链表定义: n个节点离散分配&#xff0c; 彼此通过指针相连 每个节点只有一个前驱节点&#xff0c;每个节点只有一个后续节点 首节点没有前驱节点尾节点没有后续节点 专业术语: 首节点:第一个有效节点尾节点:最后一个有效节点头结点: 1&#xff0c;第一个有效节点之前的那个节…

《关键对话——注意观察,如何判断对话氛围是否安全》读书笔记(四)

《关键对话——注意观察&#xff0c;如何判断对话氛围是否安全》读书笔记(四) 在对话过程中&#xff0c;既要关注对话内容&#xff08;即讨论的主题&#xff09;&#xff0c;也要观察对话气氛&#xff08;即参与者的反应&#xff09;。越早意识到你和对方退出了对话机制&#x…

扬长避短使用Windbg和Visual Studio高效调试调试你的代码

扬长避短使用Windbg和Visual Studio高效调试调试你的代码 经常被问及这样的问题&#xff1a; 你为什么非要使用Windbg调试你的程序&#xff1f; 记得有一次面试的时候笔者也被问到这样的问题&#xff0c;我的回答是&#xff1a;不是我非要使用Windbg, 只是在不同的情况下使用不…

链表的分类

分类: 单链表 双链表:每一个节点有两个指针域 循环链表&#xff1a;能通过任何一个节点找到其他所有的结点 非循环链表 链表中第一个结点的存储位置叫做头指针&#xff0c;那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点&#xff0c;其实就是上一个的后继指…

机器学习基础笔记总结

最近在学习latex&#xff0c;将之前的机器学习基础知识相关的笔记用latex整理了以下&#xff0c;源地址如下&#xff1a; https://github.com/duankai/latex_book&#xff0c;感兴趣的可以自由下载&#xff0c;也可以随意使用latex的格式。 pdf 效果如下&#xff0c;文件可在h…

IOS基础:ActionSheet(上拉菜单)的实现

一看图就明白了&#xff0c;毋需多说。 [java] view plaincopyprint?UIActionSheet* mySheet [[UIActionSheet alloc] initWithTitle:"ActionChoose" delegate:self cance…

Eureka的优点

Eureka的优势 1、在Eureka平台中&#xff0c;如果某台服务器宕机&#xff0c;Eureka不会有类似于ZooKeeper的选举leader的过程&#xff1b;客户端请求会自动切换到新的Eureka节点&#xff1b;当宕机的服务器重新恢复后&#xff0c;Eureka会再次将其纳入到服务器集群管理之中&a…

Word2vec学习笔记总结

git地址&#xff1a; https://github.com/duankai/latex_book/tree/master/word2vec

在 Objective-C 中对 Block 应用 property 时的注意事项

应当使用&#xff1a;property (nonatomic, copy)今天在这个问题上犯错误了&#xff0c;找了好久才知道原因。另外&#xff0c;简单的进行反汇编看了下&#xff0c;Block 被存储在静态变量区&#xff0c;运行时构造出一个运行栈&#xff0c;进行调用。retain 并不会改变 Block …