jquery 上传回显图片预览

/*******************************************************************************
* 异步上传文件,兼容IE8,火狐和谷歌可用,如果可以使用h5则使用h5
* 实现单个多次上传不刷新
* @author 柳伟伟 <[email protected]>
* @version 1.5 (2016-05-09) 加入h5上传文件
*******************************************************************************/
(function ($) {
    var frameCount = 0;
    var formName = "";
    var iframeObj = null;
    var state = {};
    //var fileHtml = "";
    var colfile = null;
    //清空值
    function clean(target) {
        var file = $(target);
        var col = file.clone(true).val("");
        file.after(col);
        file.remove();
        //关键说明
        //先得到当前的对象和参数,接着进行克隆(同时克隆事件)
        //将克隆好的副本放在原先的之后,按照顺序逐个删除,最后初始化克隆的副本
    };
    function h5Submit(target) {
        var options = state.options;
        var fileObj = target[0].files[0];

        var fd = new FormData();//h5对象
        //附加参数
        for (key in options.params) {
            fd.append(key, options.params[key])
        }
        var fileName = target.attr(‘name‘);
        if (fileName == ‘‘
            || fileName == undefined) {
            fileName = ‘file‘;
        }
        fd.append(fileName, fileObj);
        //异步上传
        var xhr = new XMLHttpRequest();
        xhr.upload.addEventListener("progress", function (evt) {
            if (evt.lengthComputable) {
                var percentComplete = Math.round(evt.loaded * 100 / evt.total);
                console.log(percentComplete + "%");
                if (options.onProgress) {
                    options.onProgress(evt);
                }
            }
        }, false);
        xhr.addEventListener("load", function (evt) {
            if (‘json‘ == options.dataType) {
                var d = window.eval(‘(‘ + evt.target.responseText + ‘)‘);
                options.onComplate(d);
            } else {
                options.onComplate(evt.target.responseText);
            }
        }, false);
        xhr.addEventListener("error", function () {
            console.log("error");
        }, false);
        xhr.open("POST", options.url);
        xhr.send(fd);
    }
    function ajaxSubmit(target) {
        var options = state.options;
        if (options.url == ‘‘ || options.url == null) {
            alert("无上传地址");
            return;
        }
        if ($(target).val() == ‘‘ || $(target).val() == null) {
            alert("请选择文件");
            return;
        }
        var canSend = options.onSend($(target), $(target).val());
        if (!canSend) {
            return;
        }
        /*判断是否可以用h5*/
        if (window.FormData) {
            //h5
            console.log(‘h5Submit‘);
            h5Submit(target);
        } else {
            /**/
            if (iframeObj == null) {
                var frameName = ‘upload_frame_‘ + (frameCount++);
                var iframe = $(‘<iframe style="position:absolute;top:-9999px" ><script type="text/javascript"></script></iframe>‘).attr(‘name‘, frameName);
                formName = ‘form_‘ + frameName;
                var form = $(‘<form method="post" style="display:none;" enctype="multipart/form-data" />‘).attr(‘name‘, formName);
                form.attr("target", frameName).attr(‘action‘, options.url);
                //
                var fileHtml = $(target).prop("outerHTML");
                colfile = $(target).clone(true);
                $(target).replaceWith(colfile);
                var formHtml = "";
                // form中增加数据域
                for (key in options.params) {
                    formHtml += ‘<input type="hidden" name="‘ + key + ‘" value="‘ + options.params[key] + ‘">‘;
                }
                form.append(formHtml);
                form.append(target);
                iframe.appendTo("body");
                form.appendTo("body");
                iframeObj = iframe;
            }
            //禁用
            $(colfile).attr("disabled", "disabled");
            var form = $("form[name=" + formName + "]");
            //加载事件
            iframeObj.bind("load", function (e) {
                var contents = $(this).contents().get(0);
                var data = $(contents).find(‘body‘).text();
                if (‘json‘ == options.dataType) {
                    try {
                        data = window.eval(‘(‘ + data + ‘)‘);
                    }
                    catch (Eobject) {
                        console.log(‘返回的json数据错误‘);
                        console.log(Eobject);
                        data = null;
                    }
                }
                options.onComplate(data);
                iframeObj.remove();
                form.remove();
                iframeObj = null;
                //启用
                $(colfile).removeAttr("disabled");
            });
            try {
                form.submit();
            } catch (Eobject) {
                console.log(Eobject);
            }
        }
    };
    //构造
    $.fn.upload = function (options) {
        if (typeof options == "string") {
            return $.fn.upload.methods[options](this);
        }
        options = options || {};
        state = $.data(this, "upload");
        if (state)
            $.extend(state.options, options);
        else {
            state = $.data(this, "upload", {
                options: $.extend({}, $.fn.upload.defaults, options)
            });
        }
    };
    //方法
    $.fn.upload.methods = {
        clean: function (jq) {
            return jq.each(function () {
                clean(jq);
            });
        },
        ajaxSubmit: function (jq) {
            return jq.each(function () {
                ajaxSubmit(jq);
            });
        },
        getFileVal: function (jq) {
            return jq.val()
        }
    };
    //默认项
    $.fn.upload.defaults = $.extend({}, {
        url: ‘‘,
        dataType: ‘json‘,
        params: {},
        onSend: function (obj, str) { return true; },
        onComplate: function (e) {},
        onProgress: function (e) {}
    });
})(jQuery);

调用下面的方法 function ajaxSubmit1() {
         $("#change_file").upload({
                url: ‘../upload/uploadImage.do‘,
                // 其他表单数据
                params: { name: ‘pxblog‘ },
                // 上传完成后, 返回json, text
                dataType: ‘json‘,
                onSend: function (obj, str) { return true; },
                // 上传之后回调
                onComplate: function (data) {
                    $("#show_img").attr("src",data.url);
                    $("#imagePathOne").val(data.url);
                }
            });
            $("#change_file").upload("ajaxSubmit");
     }

/******************************************************************************** 异步上传文件,兼容IE8,火狐和谷歌可用,如果可以使用h5则使用h5* 实现单个多次上传不刷新* @author 柳伟伟 <[email protected]>* @version 1.5 (2016-05-09) 加入h5上传文件*******************************************************************************/(function ($) {    var frameCount = 0;    var formName = "";    var iframeObj = null;    var state = {};    //var fileHtml = "";    var colfile = null;    //清空值    function clean(target) {        var file = $(target);        var col = file.clone(true).val("");        file.after(col);        file.remove();        //关键说明        //先得到当前的对象和参数,接着进行克隆(同时克隆事件)        //将克隆好的副本放在原先的之后,按照顺序逐个删除,最后初始化克隆的副本    };    function h5Submit(target) {        var options = state.options;        var fileObj = target[0].files[0];
        var fd = new FormData();//h5对象        //附加参数        for (key in options.params) {            fd.append(key, options.params[key])        }        var fileName = target.attr(‘name‘);        if (fileName == ‘‘            || fileName == undefined) {            fileName = ‘file‘;        }        fd.append(fileName, fileObj);        //异步上传        var xhr = new XMLHttpRequest();        xhr.upload.addEventListener("progress", function (evt) {            if (evt.lengthComputable) {                var percentComplete = Math.round(evt.loaded * 100 / evt.total);                console.log(percentComplete + "%");                if (options.onProgress) {                    options.onProgress(evt);                }            }        }, false);        xhr.addEventListener("load", function (evt) {            if (‘json‘ == options.dataType) {                var d = window.eval(‘(‘ + evt.target.responseText + ‘)‘);                options.onComplate(d);            } else {                options.onComplate(evt.target.responseText);            }        }, false);        xhr.addEventListener("error", function () {            console.log("error");        }, false);        xhr.open("POST", options.url);        xhr.send(fd);    }    function ajaxSubmit(target) {        var options = state.options;        if (options.url == ‘‘ || options.url == null) {            alert("无上传地址");            return;        }        if ($(target).val() == ‘‘ || $(target).val() == null) {            alert("请选择文件");            return;        }        var canSend = options.onSend($(target), $(target).val());        if (!canSend) {            return;        }        /*判断是否可以用h5*/        if (window.FormData) {            //h5            console.log(‘h5Submit‘);            h5Submit(target);        } else {            /**/            if (iframeObj == null) {                var frameName = ‘upload_frame_‘ + (frameCount++);                var iframe = $(‘<iframe style="position:absolute;top:-9999px" ><script type="text/javascript"></script></iframe>‘).attr(‘name‘, frameName);                formName = ‘form_‘ + frameName;                var form = $(‘<form method="post" style="display:none;" enctype="multipart/form-data" />‘).attr(‘name‘, formName);                form.attr("target", frameName).attr(‘action‘, options.url);                //                var fileHtml = $(target).prop("outerHTML");                colfile = $(target).clone(true);                $(target).replaceWith(colfile);                var formHtml = "";                // form中增加数据域                for (key in options.params) {                    formHtml += ‘<input type="hidden" name="‘ + key + ‘" value="‘ + options.params[key] + ‘">‘;                }                form.append(formHtml);                form.append(target);                iframe.appendTo("body");                form.appendTo("body");                iframeObj = iframe;            }            //禁用            $(colfile).attr("disabled", "disabled");            var form = $("form[name=" + formName + "]");            //加载事件            iframeObj.bind("load", function (e) {                var contents = $(this).contents().get(0);                var data = $(contents).find(‘body‘).text();                if (‘json‘ == options.dataType) {                    try {                        data = window.eval(‘(‘ + data + ‘)‘);                    }                    catch (Eobject) {                        console.log(‘返回的json数据错误‘);                        console.log(Eobject);                        data = null;                    }                }                options.onComplate(data);                iframeObj.remove();                form.remove();                iframeObj = null;                //启用                $(colfile).removeAttr("disabled");            });            try {                form.submit();            } catch (Eobject) {                console.log(Eobject);            }        }    };    //构造    $.fn.upload = function (options) {        if (typeof options == "string") {            return $.fn.upload.methods[options](this);        }        options = options || {};        state = $.data(this, "upload");        if (state)            $.extend(state.options, options);        else {            state = $.data(this, "upload", {                options: $.extend({}, $.fn.upload.defaults, options)            });        }    };    //方法    $.fn.upload.methods = {        clean: function (jq) {            return jq.each(function () {                clean(jq);            });        },        ajaxSubmit: function (jq) {            return jq.each(function () {                ajaxSubmit(jq);            });        },        getFileVal: function (jq) {            return jq.val()        }    };    //默认项    $.fn.upload.defaults = $.extend({}, {        url: ‘‘,        dataType: ‘json‘,        params: {},        onSend: function (obj, str) { return true; },        onComplate: function (e) {},        onProgress: function (e) {}    });})(jQuery);

时间: 2024-11-10 15:55:52

jquery 上传回显图片预览的相关文章

jquery上传多图片预览

(php+ajax配合) 手机上兼容. 姑姑,过儿学会了......

文件上传之图片预览

一.业界现状分析 有时候我们需要在上传图片之前为用户提供图片预览的功能,HTML5规范出来之前,由于缺少原生的File API支持,我们需要借助Flash或者浏览器插件来满足这种需求.有了HTML5,我们可使用URL或者FileReader对象实现预览功能. 二.应用场景 图片分享类的应用,如Flickr,Facebook.相册应用,如:QQ相册. 虽然139邮箱没有合适的应用场景,但是可将技术预研的成果作为技术储备,好东西总有用得着的时候. 三.编码实现 方式一:window.URL (1).

dwz+jquery+fileupload+springmvc实现文件上传 及图片预览

1 前台jsp:文件的上传利用了iframe实现局部刷新功能.使用了apache的fileupload组件,用到的jar: commons-fileupload.jar,commons-io.jarDiskFileItemFactory fac = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(fac);upload.setHeaderEncoding("utf-8"); Html代

input实现多文件上传及图片预览

通过使用html的input标签可以实现文件上传比如 <input id="file" type="file" name="upload" multiple onchange="showch();"> 其中将type属性设为file. 添加multiple实现多文件上传入下图所示: 通过使用原生js或jQuery就可以获得文件名,文件路径,文件大小等属性 获得文件属性的js代码如下: <script type

Jquery OR Js 实现图片预览

Jquery方法一: <!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript" src="jquery.js"></script> </head> <body> <input type='file' id='file'/> <div style=&

11.27 上传下载 图片预览

代码页面 using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls; public partial class Default2 : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { } pr

jQuery实现鼠标经过图片预览大图效果

jQuery:是一种客户端的技术,它的诞生的理由是:write less,do more(写更少的代码,做更多的事情). 因此,我们可以借助jQuery来实现一些很酷炫的效果,相比于javaScript来说,同样的效果,但是很简单的代码.jQuery中的核心知识点就是选择器的使用,选择器的内容我会在之后的博客中总结,希望大家去看下,学好了选择我器,相当于完全掌握了jQuery. 这篇博文是实现怎么通过jQuery实现我们在购物网站中常见的:当鼠标经过了图片数,图片会放大进行预览大图.接下来我就粘

利用jquery,html5实现图片预览实时上传

          html代码 <div class="form-group"> <label for="pic" class="col-md-1 control-label">小图:</label> <div class="col-md-4"> <input type="file" class="form-control" nam

6.上传前图片预览

1.html 代码: <div class="file-box"> <form action="upload.class.php" id="form_id" method="post" enctype="multipart/form-data" > <input type="file" name="imagename" id="