zoukankan      html  css  js  c++  java
  • 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
    
                 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=" 150px;height: 100%" id="upload" />');
    
                },
                removeCompleted: true,               // 上传成功后移除进度条
                fileSizeLimit: "4MB",                  // 文件大小限制
                onSelectError: function (file, errorCode, errorMsg) {
                    var msgText = "上传失败
    ";
                    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 + "
    " + 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);
                } 
  • 相关阅读:
    实现qsort(和qsort差一个数量级啊,伤自尊了)
    广度优先遍历目录(Windows平台、C++)
    在CentOS上以源码编译的方式安装Greenplum数据库
    Java泛型函数的运行时类型检查的问题
    Android代码的几点小技巧
    关于矢量图片资源向后兼容:CompatVectorFromResourcesEnabled标志的使用
    指定Android Studio编译工程时的源文件编码
    安卓日历同步的一些要点
    Android Studio编译错误:Unexpected lock protocol found in lock file. Expected 3, found 0.
    系统信息命令
  • 原文地址:https://www.cnblogs.com/zhaoyihao/p/4692675.html
Copyright © 2011-2022 走看看