Jquery自定义图片上传插件

1 概述

  编写后台网站程序大多数用到文件上传,可是传统的文件上传控件不是外观不够优雅,就是性能不太好看,翻阅众多文件上传控件的文章,发现可以这样去定义一个文件上传控件,实现的文件上传的效果图如下:

2、该图片上传插件实现功能如下:

  1>能够异步上传,上传成功之后,服务器返回响应结果;能够定义上传前和上传后自定义处理方式;

  2>能够实现文件格式判断,过滤非图片文件;

  3>服务端能够过滤重复上传的图片;

3、页面代码分析:

  1>、Jquery图片上传插件代码如下:

// 选中文件, 提交表单(开始上传)
(function ($) {
    var iframe;
    var form;
    var opeartData=null;

    $.uploadDefault = {
        url: ‘‘,
        fileName: ‘filedata‘,
        dataType: ‘json‘,
        imgshow: ‘‘,
        onSend: function(){ return true; },
        onSubmit: function () { return true; },
        onComplate: function () { return true; }
    };

    $.UpLoadForm = {

        //图片格式验证
        $PicChange: function (obj)
        {
            if (opeartData.imgshow != null && opeartData.imgshow != ‘‘)
            {
                $("#" + opeartData.imgshow).val($(obj).val());
            }
        },

        //判断pic格式是否正确
        $IsPicCheck: function (fileName)
        {
            if (fileName != null && fileName != "") {
                //lastIndexOf如果没有搜索到则返回为-1
                if (fileName.lastIndexOf(".") != -1) {
                    var fileType = (fileName.substring(fileName.lastIndexOf(".") + 1, fileName.length)).toLowerCase();
                    var suppotFile = new Array();
                    suppotFile[0] = "jpg";
                    suppotFile[1] = "gif";
                    suppotFile[2] = "bmp";
                    suppotFile[3] = "png";
                    suppotFile[4] = "jpeg";
                    for (var i = 0; i < suppotFile.length; i++) {
                        if (suppotFile[i] == fileType) {
                            return true;
                        } else {
                            continue;
                        }
                    }
                    return false;
                } else {
                    return false;
                }
            }
        },

        $ImgUpLoad: function () {
            if (opeartData == null)
            {
                //没有选择图片或者图片已经上传
                return;
            }
            opeartData = $.extend($.uploadDefault, opeartData);
            var canSend = opeartData.onSend();
            if (!canSend) {
                return;
            }
            if (!opeartData.onSubmit())//图片验证
            {
                return;
            }
            form.submit();
            iframe.load(function() {
                var contents = $(this).contents().get(0);
                var data = $(contents).find(‘body‘).text();
                if (‘json‘ == opeartData.dataType) {
                    data = window.eval(‘(‘ + data + ‘)‘);
                }
                opeartData.onComplate(data);
                setTimeout(function() {
                    iframe.remove();
                    form.remove();
                    opeartData = null;
                }, 5000);
            });
        },

        $OpenFIle: function (options) {
            opeartData = $.extend($.uploadDefault, options);
            if (opeartData.url == ‘‘) {
                return;
            }
            var frameName = ‘upload_frame_0‘;
            var formName = ‘upload_form_0‘;
            if ($("#" + formName).length > 0) {
                iframe = $("#" + frameName);
                form = $("#" + formName);
            }
            else {
                iframe = $(‘<iframe style="position:absolute;top:-9999px" id="‘ + frameName + ‘" />‘).attr(‘name‘, frameName);
                form = $(‘<form method="post" style="display:none;" id="‘ + formName + ‘" enctype="multipart/form-data" />‘).attr(‘name‘, ‘form_‘ + frameName);
                form.attr("target", frameName).attr(‘action‘, opeartData.url);
                // form中增加数据域
                var formHtml = ‘<input type="file" name="‘ + opeartData.fileName + ‘" onchange="$.UpLoadForm.$PicChange(this)")"/>‘;
                form.append(formHtml);
                iframe.appendTo("body");
                form.appendTo("body");
            }
            var fileInput = $(‘input[type=file][name=‘ + opeartData.fileName + ‘]‘, form);
            fileInput.click();
        }
    }
})(jQuery);

  2>前台页面调用代码如下,Jquery插件,别忘记引入Jquery对应js:

<script type="text/javascript">
        $(function () {
            $("#imagetx").bind("click", function () {
                $.UpLoadForm.$OpenFIle({
                    // 上传地址
                    url: ‘../upload/UploadImg‘,
                    // 文件域名字
                    fileName: ‘upimage‘,
                    // 其他表单数据
                    imgshow: ‘imagetx‘,
                    // 上传完成后, 返回json, text
                    dataType: ‘json‘,
                    // 上传之前回调,return true表示可继续上传
                    onSend: function () {
                        $.ShowLoadDialog();
                        return true;
                    },
                    onSubmit: function () {
                        var picpath = $("#imagetx").val();
                        console.log(picpath);
                        if (!$.UpLoadForm.$IsPicCheck(picpath))
                        {
                            $.ShowLoadDialogClose();
                            $TipDialog("图片上传", "请上传jpg、gif、bmp、png、jpeg格式的图片!");
                            return false;
                        }
                        return true;
                    },
                    // 上传之后回调
                    onComplate: function (data) {
                        $.ShowLoadDialogClose();
                        if (data != null)
                        {
                            console.log(data)
                            if (data.errorcode == "200") {
                                $("#showpic").attr("src", data.picurl);
                            }
                            else {
                                $TipDialog("图片上传", "图片上传失败");
                            }
                        }
                    }
                });
            });
            $("#btnupload").bind("click", function () {
                $.UpLoadForm.$ImgUpLoad();
            })

        });
    </script>

  3>后台服务器验证:

        [HttpPost]
        public JsonResult UploadImg(HttpPostedFileBase upimage)
        {
            string pic = "", error = "001",pcode="";
            try
            {
                if (upimage != null)
                {
                    string fileName = DateTime.Now.ToString("yyyyMMdd") + System.IO.Path.GetFileName(upimage.FileName);
                    string[] pictext = { ".jpg",".gif",".bmp",".png",".jpeg" };
                    string extenname= System.IO.Path.GetExtension(fileName);
                    if (pictext.Contains(extenname))
                    {
                        string filePhysicalPath = Server.MapPath("~/Upload/Images/" + fileName);
                            upimage.SaveAs(filePhysicalPath);
                            pic = "/Upload/Images/" + fileName;
                        }
                        else
                        {
                            error = "200";
                            pic =pic ;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                error = ex.Message;
            }
            return Json(new
            {
                errorcode = error,
                picurl = pic,
                piccode = pcode
            });
        }

图片上传也就完成,展示的效果也如上面所示;

时间: 2024-12-04 19:26:49

Jquery自定义图片上传插件的相关文章

WebUploader文件图片上传插件的使用

最近在项目中用到了百度的文件图片上传插件WebUploader.分享给大家 需要在http://fex.baidu.com/webuploader/download.html点击打开链接下载WebUploader /*图片上传 */ var $ = jQuery, $img=$("#imagePath_img"), // 优化retina, 在retina下这个值是2 ratio = window.devicePixelRatio || 1, // 缩略图大小 thumbnailWid

赞!带进度条的 jQuery 文件拖放上传插件

jQuery File Uploader 是一个 jQuery 文件拖放上传插件,包括 Ajax 上传和进度条效果.作者编写这个插件的想法是要保持它非常简单,不像其他的插件,很多的标记,并提供一些 Hack 的方式使之兼容那些古老的浏览器.jQuery File Uploader 重点是现代浏览器,而且还提供了一个方法让你知道什时候插件不支持使用. 立即下载      在线演示 jQuery File Uploader 是一个 jQuery 文件拖放上传插件,包括 Ajax 上传和进度条效果.作

Aps.net中基于bootstrapt图片上传插件的应用

Aps.net中基于bootstrapt图片上传插件的应用 在最近的项目中需要使用一个图片上传的功能,而且是多张图片同时上传到服务器的文件夹中,将图片路径存放在数据库中.为了外观好看使用了bootstrapt插件.插件下载地址:   http://www.jq22.com/jquery-info5231 index.html中的代码: <script> //初始化函数 $("#file-1").fileinput({ uploadUrl: 'image/Handler.as

JQuery的AjaxUpdater上传插件

JQuery的AjaxUpdater上传插件. 其实JQuery已经提供了很多基于Ajax的调用方法,那为什么还要做这样一个Ajax插件呢! 其实目的很简单就是为了调用更方便.m.mlyrx120.com 这个插件的特点就是允许通过HTML属性描述来进行一个Ajax操作的定义; 也就是说通过使该插件只要简单的属性描述就能实现Ajax请求和局部更新的功能. 描述信息分两部分 第一部分是描述Ajax提交的配置信息ajaxupdater属性: 属性成员分别明:url提交的路径,updater提交后更新

ueditor 百度编辑器 自定义图片上传路径和格式化上传文件名

今天项目中需要自定义图片上传的保存路径,并且不需要按照日期自动创建存储文件夹和文件名,我的ueditor版本是1.3.6.下面记录一下我配置成功的方法,如果有什么不对的地方欢迎指出,共同学习: 1:我在本地项目的根目录下新建一个文件夹,比如:upload. 2:打开ueditor/php/config.php,改成如下代码后保存: <?php return array( //图片上传允许的存储目录 /*'imageSavePath' => array ( 'upload1', 'upload2

vue项目富文本编辑器vue-quill-editor之自定义图片上传

使用富文本编辑器的第一步肯定是先安装依赖 npm i vue-quill-editor 1.如果按照官网富文本编辑器中的图片上传是将图片转为base64格式的,如果需要上传图片到自己的服务器,需要修改配置. 创建一个quill-config.js的文件,里面写自定义图片上传.代码如下 /*富文本编辑图片上传配置*/ const uploadConfig = { action: '', // 必填参数 图片上传地址 methods: 'POST', // 必填参数 图片上传方式 token: ''

使用百度UMeditor富文本编辑器,修改自定义图片上传,修改源码

富文本编辑器,不多说了,这个大家应该都用到过,至于用到的什么版本,那就分很多种 CKEditor:很早以前叫FCK,那个时候也用过,现在改名了,比较流行的一个插件,国外很多公司在用 UEDITOR:百度开发的插件,lite版是UM EasyUI编辑器:用easyUI的都懂,基本上肯定用到 其他的富文本编辑器就不说了,前两个小编我用的比较多 本来我是比较倾向于CKEditor,但是这个插件不支持图片上传,图片功能只能链接过去,而不能在控件本身中上传,所以就选择了UMeditor 为啥选择UM,不选

jquery实现图片上传前本地预览

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title> <script src="js/jquery1.8.3-min.js"></script></head><body><div style="width:500p

百度图片上传插件【webuploader】

插件功能 |webuploader |文件上传 |图片上传 官方文档http://fex.baidu.com/webuploader/ 引入资源 使用Web Uploader文件上传需要引入三种资源:JS, CSS, SWF. <!--引入CSS--> <link rel="stylesheet" type="text/css" href="webuploader文件夹/webuploader.css"> <!--引