Uploadify插件使用方法

1、下载所需文件

2、导入所需文件,还需要应用jquery.js文件

    

3、导入css、js

    uploadify.css、jquery.uploadify.min.js

4、前端代码

    p标签存放uploadify,input的目的是存取上传成功时,图片的相对路径。

<p id="uploadify"></p>
<input id="imagespath" name="ImagesPath" type="hidden" value="" />

    js代码,需要注意的是,服务端处理的地址,以及上传成功时的事件处理程序。重写事件时,要把事件加入overrideEvents数组中,具体可查看js源代码。

 $(‘#uploadify‘).uploadify({
            uploader: ‘/uploadhandler.ashx‘,           // 服务器端处理地址
            swf: ‘/scripts/uploadify/uploadify.swf‘,    // 上传使用的 Flash

            width: 80,                          // 按钮的宽度
            height: 23,                         // 按钮的高度
            buttonText: "图片上传",                 // 按钮上的文字
            buttonCursor: ‘hand‘,                // 按钮的鼠标图标

            fileObjName: ‘Filedata‘,            // 上传参数名称

            overrideEvents: [‘onDialogClose‘, ‘onUploadSuccess‘, ‘onSelectError‘, ‘onUploadError‘],   //要重写的事件
            onUploadSuccess: function (file, data, response) {
                bootbox.alert("上传成功");

                $("#imagespath").val(data).after(‘<img src="‘ + data + ‘" style="width: 150px;height: 100%" id="upload" />‘);

            },
            removeCompleted: true,               // 上传成功后移除进度条
            fileSizeLimit: "4MB",                  // 文件大小限制
            onSelectError: function (file, errorCode, errorMsg) {
                var msgText = "上传失败\n";
                switch (errorCode) {
                    case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
                        //this.queueData.errorMsg = "每次最多上传 " + this.settings.queueSizeLimit + "个文件";
                        msgText += "每次最多上传 " + this.settings.queueSizeLimit + "个文件";
                        break;
                    case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
                        msgText += "文件大小超过限制( " + this.settings.fileSizeLimit + " )";
                        break;
                    case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
                        msgText += "文件大小为0";
                        break;
                    case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
                        msgText += "文件格式不正确,仅限 " + this.settings.fileTypeExts;
                        break;
                    default:
                        msgText += "错误代码:" + errorCode + "\n" + errorMsg;
                }
                bootbox.alert(msgText);

            },
            onUploadError: function (file, errorCode, errorMsg) {
                // Load the swfupload settings
                var settings = this.settings;

                // Set the error string
                var errorString = ‘上传失败‘;
                switch (errorCode) {
                    case SWFUpload.UPLOAD_ERROR.HTTP_ERROR:
                        errorString = ‘服务器错误 (‘ + errorMsg + ‘)‘;
                        break;
                    case SWFUpload.UPLOAD_ERROR.MISSING_UPLOAD_URL:
                        errorString = ‘Missing Upload URL‘;
                        break;
                    case SWFUpload.UPLOAD_ERROR.IO_ERROR:
                        errorString = ‘IO Error‘;
                        break;
                    case SWFUpload.UPLOAD_ERROR.SECURITY_ERROR:
                        errorString = ‘Security Error‘;
                        break;
                    case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
                        alert(‘The upload limit has been reached (‘ + errorMsg + ‘).‘);
                        errorString = ‘Exceeds Upload Limit‘;
                        break;
                    case SWFUpload.UPLOAD_ERROR.UPLOAD_FAILED:
                        errorString = ‘Failed‘;
                        break;
                    case SWFUpload.UPLOAD_ERROR.SPECIFIED_FILE_ID_NOT_FOUND:
                        break;
                    case SWFUpload.UPLOAD_ERROR.FILE_VALIDATION_FAILED:
                        errorString = ‘Validation Error‘;
                        break;
                    case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
                        errorString = ‘Cancelled‘;
                        this.queueData.queueSize -= file.size;
                        this.queueData.queueLength -= 1;
                        if (file.status == SWFUpload.FILE_STATUS.IN_PROGRESS || $.inArray(file.id, this.queueData.uploadQueue) >= 0) {
                            this.queueData.uploadSize -= file.size;
                        }
                        // Trigger the onCancel event
                        if (settings.onCancel) settings.onCancel.call(this, file);
                        delete this.queueData.files[file.id];
                        break;
                    case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
                        errorString = ‘Stopped‘;
                        break;
                }
                bootbox.alert(errorString);
            },
            // 两个配套使用
            fileTypeExts: "*.jpg;*.png",             // 扩展名
            fileTypeDesc: "请选择 jpg png 文件",     // 文件说明

            auto: true,                // 选择之后,自动开始上传
            multi: true,               // 是否支持同时上传多个文件
            queueSizeLimit: 5          // 允许多文件上传的时候,同时上传文件的个数
        });

5、后台处理程序

    新建一个一般处理程序,注意js中修改地址。Filedata注意与前端保持一致。在这里我们使用文件的MD5值为文件名存放,保存的时候重复文件会直接覆盖。这样就不会有重复的文件。创建目录的时候,按照年月日来分层。保存成功,把文件的相对地址发送到前端,前端添加一个img标签显示图片,hidden标签存放路径地址,以待下一步存到数据库中。

  HttpPostedFile file = context.Request.Files["Filedata"];
            if (file == null)
            {
                context.Response.Write("上传为空");
            }
            else
            {
                string filename = Path.GetFileName(file.FileName);
                string ext = Path.GetExtension(filename);
                filename = MD5Helper.GetStreamMD5(file.InputStream); //使用文件的md5值作为文件名,相同文件直接覆盖存储
                string path = "/ImageUpload/" + DateTime.Now.Year + "/" + DateTime.Now.Month + "/" + DateTime.Now.Day +
                              "/";
                Directory.CreateDirectory(context.Server.MapPath(path));
                file.SaveAs(context.Server.MapPath(path + filename + ext));
                context.Response.Write(path + filename + ext);
            } 
时间: 2024-10-19 09:32:03

Uploadify插件使用方法的相关文章

Uploadify—借助Uploadify插件实现图片预览时如何解决Chrome浏览器报“喔唷,崩溃啦”

今天借助Uploadify插件实现了图片预览及其上传的功能,可是在Chrome浏览器中会时不时地出现如下图所示的情况: 解决方法:使用这种方法引用该插件js文件: <script type="text/javascript"> document.write("<script type='text/javascript' src='<%=basePath %>js/uploadify/jquery.uploadify.min.js?" +

uploadify插件Http Error(302)错误记录(MVC)

由于项目(asp.net MVC)需要做一个附件上传的功能,使用的是jQuery的Uploadify插件的2.1.0版本,上传文件到自己项目指定的文件夹下面.做完之后,在谷歌上测试是正确的,在火狐上报Http 302的错误,自己也找了很多资料去看,也试了试,都不行,最后回本溯源,看302的错误解释.官方给的解释是:302重定向,暂时性转移. 自己就尝试着把处理文件上传的方法放到了另外一个Controller下面,结果在火狐上就不会报错了,好变态啊,自己花费好久都没解决的问题,在一瞬间竟然搞定了,

jquery.uploadify插件在chrom浏览器频繁崩溃问题

jquery.uploadify插件在chrom浏览器频繁崩溃问题,一直困扰了好久,网上很多人说是由于chrom缓存的原因,插件初始化时,需要引用js,而chrom的缓存导致没有没有请求到jquery.uploadify-3.1_min.js,所以引起崩溃,可以在引用js时,加入随机数:<script type="text/javascript" src="/js/jquery.uploadify-3.1_min.js?ver=<?php echo rand(0,

解决uploadify插件不同浏览器下的兼容性问题

http://www.thinkphp.cn/code/2138.html uploadify在部分浏览器上没法使用,或者各种报错的解决方法.uploadify插件上传图片是很爽的体验. 如果用chrome浏览器使用该插件基本上不会出任何错误. 报错情况: 1.缺少flash插件. 这种情况比较好解决,直接下载一个flash for firefox插件安装上就可以解决了,或者在安装一个flash for ie插件. 2.直接HTTP 302错误. 这种情况说明页面做了session验证,做了重定

asp.net中使用uploadify插件上传文件, session中的值丢失的问题

工作中遇到使用uploadify插件上传文件后,后台代码中的session[XXX]值为null的问题,反复跟踪,发现不是值丢失,而是sessionID发生了变化,而引起SessionID发生变化的原因就是因为使用了uplodify插件 解决方法: <script type="text/javascript"> var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==nul

Sublime Text 3插件安装方法

一:安装Sublime Text 3插件的方法 安装package control组件,然后直接在线安装: 1.按Ctrl+`调出console(注:安装有QQ输入法的这个快捷键会有冲突的.输入法属性设置-输入法管理-取消热键切换至QQ拼音) 2.粘贴下面代码究竟部命令行并回车: import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); ur

MyEclipse 10 中安装Android ADT 22插件的方法

MyEclipse 10 中安装Android ADT 22插件的方法 下载ADT包:http://dl.google.com/android/ADT-22.0.0.zip 将ADT-22.0.0.zip文件放在指定的目录下,例如D:\Programs\Android,不解压. 打开MyEclipse,点击菜单Help >MyEclipse Configuration Center,如下图 在MyEclipse Configuration Center中,点击Software标签,再点击add

Validation-jQuery表单验证插件使用方法

http://www.cnblogs.com/shuang121/archive/2012/04/23/2466628.html 作用 jquery.validate是jquery旗下的一个验证框架,借助jquery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法,并且对国际化也有很好的支持. 使用前的布置 说明:需要JQuery版本:1.2.6+ 步骤: 要导入相应的jQuery.js与jquery.validate.js文件<script src="jquery.

sublime text2 安装插件的方法

sublime text2 可以离线和在线两种安装插件的方法: 1.离线安装插件:①下载离线插件并且解压: ②把解压的文件夹放在 .\Sublime Text 2.0.2 x64\Data\Packages 中即可. 2.安装package control组件,然后直接在线安装: ①按Ctrl+`调出console ②粘贴以下代码到底部命令行并回车: import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330