JavaScript图片上传并预览的完整实例

目录
  • 一、前端界面是通过jqgrid展示的
  • 二、jqgrid特性
  • 三、代码实例
    • 1、jqgrid页面展示
    • 2、模块页面
    • 3、ajax实现异步请求
  • 五、效果展示
  • 总结

一、前端界面是通过jqgrid展示的

jqgrid是典型的B/C架构(浏览器/服务器模式),服务器端只需提供数据管理,浏览器只需负责数据显示。

jqGrid是用ajax实现对请求和响应的处理,支持局部实时刷新。

二、jqgrid特性

  1. 通过配置url地址数据显示格式
  2. 支持行编辑,列搜索过滤
  3. 支持分页
  4. 添加表单支持文件上传
  5. 链式调用

三、代码实例

1、jqgrid页面展示

$(document).ready(function () {
    $("#gridTable").jqGrid({
        colNames:['标号','班次', '第一班', '第二班', '第三班', '第四班','操作'],
        colModel:[{
                name:'mark',
                index:'mark',
                width: 100,
            },{
                name:'division',
                index:'division',
                width: 100,
            },{
                name:'first_class',
                index:'first_class',
                width: 100,
            }, {
                name:'second_class',
                index:'second_class',
                width: 100,
            },{
                name:'third_class',
                index:'third_class',
                width: 100,
            }, {
                name: 'fouth_class',
                index: 'fouth_class',
                width: 100,
            }, {
                name: 'operate',
                index: 'operate',
                width: 200,
                search: false,
                formatter : function(cellvalue,options,rowObject){
                    var id = rowObject.mark
                    var str =   '<button class="btn-info" data-for="pictureModal">'+
                        '图片'+
                        '</button>';
                    return str;
                },
            }
        ],
        sortname : "mark",
        sortorder : "desc",
        viewrecords : true,
        width: 747,
        height: 355,
        rowNum: 10,
        datatype: 'text',
        pager: "#gridPager",
        onSelectRow:function(rowid){
            grid_selectRow = $("#gridTable").jqGrid("getRowData",rowid);
            $("#modal_picture").pictureLoading({});
        },
        ondblClickRow: function(rowid) {
            grid_selectRow = $("#gridTable").jqGrid("getRowData",rowid);
            $("#edit").trigger("click");
        },
    });

    jf_initJqgrid();
    jf_click();

    function jf_initJqgrid(){
        $.ajax({
            url:"DivisiondefineServlet",
            async:true,   //是否为异步请求
            cache:false,  //是否缓存结果
            type:"GET",
            dataType:"json",
            success : function(data){
                $("#gridTable").jqGrid("clearGridData");
                for(var i=0;i<=data.length;i++){
                    $("#gridTable").jqGrid('addRowData',i+1,data[i]);
                }
            }
        })
    }

    $('[id^=jqgh_gridTable_]').css("height","20px");

    function jf_click() {
        $("#add").click(function () {
            $("#modal-divisionAdd").divisionAdd({});
        })
        $("#edit").click(function () {
            $("#modal-divisionEdit").divisionEdit({});
        })
        $("#delete").click(function () {
            jf_delete();
            jf_initJqgrid();
        })
    }

    function jf_delete() {
        $.ajax({
            url:"DivisiondefineServlet?action=delete",
            async:true,   //是否为异步请求
            cache:false,  //是否缓存结果
            type:"POST",
            dataType:"text",
            data :{
                "mark1" : grid_selectRow.mark,
            },
        })
    }
});

2、模块页面

;(function($){
    $.fn.pictureLoading = function(options){
        var el = this;
        var opts = {
        }
        var param = $.extend(opts,options);
        var or = new Order(el, param);
    }

    var Order = function(el,param){
        this.el=el;
        this.param=param;
        this.orderContent();
        this.bindEvent();
        this.orderSetValue();
    }

    Order.prototype = {
        orderContent : function(){
            //创建模态窗体
            this.el.addClass("modal").attr("tabindex","-1").attr("data-backdrop","static");
            html=   '<div class="modal-dialog">'+
                        '<div class="modal-content" style="width: 450px">'+
                            '<div class="modal-header" style="border-bottom:0px;">'+
                                '<div class="row col-sm-12">'+
                                    '<div class="col-sm-8" align="left">'+
                                        '<span></span>'+
                                    '</div>'+
                                    '<div class="col-sm-4" align="right">'+
                                        '<button class="close" data-dismiss="modal" aria-hidden="true" value="HTML">'+
                                        '<span class="blue">×</span>'+
                                        '</button>'+
                                    '</div>'+
                                '</div>'+
                            '</div>'+
                            '<div class="modal-body" style="height:350px;top: -30px">'+
                                '<form  id="form"  action="PictureServlet" method="post">'+
                                    '<span>标号</span><input id="mark" name="mark" disabled/>'+
                                    '<span id="FPicName">'+
                                    '<input id="IronMan" type="file" size="45" name="IronMan" class="avatar input" οnchange="loadfile(); "style="display:none";/>'+
                                    '<img id="viewImg" class="viewImg" src="picture/html.jpg" style="height: 300px;width: 400px;" ="loadPic();" >'+
                                    '</span>'+
                                '</form>'+
                            '</div>'+
                            '<div class="modal-footer">'+
                                '<div align="right">'+
                                    '<div class="btn-group">'+
                                        '<button id="btnSubCancel" class="btn btn-default btn-sm" data-dismiss="modal">'+
                                        '<span>退出</span>'+
                                        '</button>'+
                                    '</div>'+
                                '</div>'+
                            '</div>'+
                        '</div>'+
                    '</div>';
            this.el.html("");
            this.el.append(html);
            this.el.modal("show");
        },
        orderSetValue : function(){
            $("#mark").val(grid_selectRow.mark);
            $.ajax({
                url:"PictureServlet",
                async:true,   //是否为异步请求
                cache:false,  //是否缓存结果
                type:"GET",
                dataType:"json",
                data :{
                    "mark" : $("#mark").val()
                },
                success : function(data){
                    $('#viewImg').attr('src', "../../../picture/" + data);
                },
                error:function () {
                    alert("error");
                }
            })
        },
        //自定义JS点击事件
        bindEvent : function(){
        },
    }
})(jQuery)

3、ajax实现异步请求

function loadfile(){
    var picName = $("#IronMan").val().replace("C:\fakepath\","");
    $.ajax({
        url:"PictureServlet",
        async:true,   //是否为异步请求
        cache:false,  //是否缓存结果
        type:"POST",
        dataType:"json",
        data :{
            "mark" : $("#mark").val(),
            "picName":picName,
        },
    })
    $('#viewImg').attr('src', "../../../picture/" + picName);
}

4、servlet存储并在本地存储图片文件

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws  IOException {
        System.out.println("servlet");
        response.setContentType("text/html");
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        int mark = Integer.parseInt(request.getParameter("mark"));
        String picName = request.getParameter("picName");
        service.insertPic(mark,picName);

        String directory = "E:/GDKJ/others/imooc_pic";
        File file = new File(directory,picName);
        if(file.exists()) {
            System.out.println(file.getAbsolutePath());
            System.out.println(file.getName());
            System.out.println(file.length());
        } else {
            file.getParentFile().mkdirs();
            try {
                file.createNewFile();
            } catch (IOException e) {
                System.out.println("创建新文件时出现了错误。。。");
                e.printStackTrace();
            }
        }
    }

五、效果展示

总结

到此这篇关于JavaScript图片上传并预览的文章就介绍到这了,更多相关JavaScript图片上传并预览内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • JS实现上传图片的三种方法并实现预览图片功能

    在常见的用户注册页面,需要用户在本地选择一张图片作为头像,并同时预览. 常见的思路有两种:一是将图片上传至服务器的临时文件夹中,并返回该图片的url,然后渲染在html页面:另一种思路是,直接在本地内存中预览图片,用户确认提交后再上传至服务器保存. 这两种方法各有利弊,方法一很明显,浪费流量和服务器资源:方法二则加重了浏览器的负担,并且对浏览器的兼容性要求更高(在某些低版本中的IE浏览器不支持). 以下是实现上述思路的方法: 1. 模板文件 <!DOCTYPE html> <html l

  • js图片上传前预览功能(兼容所有浏览器)

    网上找到的一份文件上传前预览的代码,转自JavaScript 图片的上传前预览(兼容所有浏览器) <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <style type="text/css"> #preview, .img, img { w

  • js 上传图片预览问题

    最近也经常遇到浏览器兼容的问题,昨天遇到上传图片预览问题,发现IE8和火狐不能显示,弄了很久,早上终于解决了很高兴.故跟大家分享下,我也多是网上找的,自己总结的一下,希望对大家有点帮助. 我们一般根据IE6.IE7进行开发的时候写图片预览的代码是: 复制代码 代码如下: document.getElementById("img").src = document.getElementById("file").value; 还有一种方式 复制代码 代码如下: <d

  • JS上传前预览图片实例

    预览图片的js代码: 复制代码 代码如下: <script type="text/javascript">        function setImagePreview(docObj,localImagId,imgObjPreview)         {            if(docObj.files && docObj.files[0])            {                //火狐下,直接设img属性            

  • js实现上传图片之上传前预览图片

    上传图片对图片进行一下预览,可以了解图片上传后大概会是什么样子,此功能用js实现,然后在fileupload控件的change事件中调用,这样当用fileupload选择完图片以后,图片就会自动显示出来了.功能很简单,却很实用. 预览图片的js代码: 复制代码 代码如下: <script type="text/javascript"> function setImagePreview(docObj,localImagId,imgObjPreview) { if(docObj

  • Javascript图片上传前的本地预览实例

    图片的上传预览功能主要用于图片上传前的一个效果的预览,目前主流的方法主要有js,jquery与flash实现,但我们一般都会使用js来实现图片上传预览功能,下面来看一个例子. 原理: 分为两步:当上传图片的input被触发并选择本地图片之后获取要上传的图片这个对象的URL(对象URL):把对象URL赋值给事先写好的img标签的src属性即可把图片显示出来. 在这里,我们需要了解Javascript里File对象.Blob对象和window.URL.createObjectURL()方法. Fil

  • js实现图片上传预览原理分析

    目前网上有很多支持图片上传时进行预览的插件,功能完备,界面优雅,使用起来也很方便.一直以来也就只是用用,没有想过这些插件背后的实现原理.趁着今天有点时间,也来学习学习. 追根溯源 设想 一开始,按照我的思路,预览可能是这么来实现的.本地选中一张图片,嵌入html的同时会显示图片的本地的绝对路径,然后通过js简单的进行设置,应该就可以实现预览效果了. 但是实际上,目前只有低版本的IE浏览器才能实现这么个效果.究其原因是浏览器厂商为了进一步强化安全,限制了file标签直接读取本地路径的能力,在HTM

  • js实现图片上传并预览功能

    本文为大家分享了js实现图片上传并预览的具体代码,供大家参考,具体内容如下 思路:完成这个功能,首先需要美化上传图片的按钮,然后添加一个<img/>标签,在图片上传之后,用新图片的src替换原来<img/>标签中的src. 如下图所示,是原始的按钮样式: 美化步骤: (1)将上传图片标签采用绝对定位,使之位于一个图片,按钮,div等标签上.或者给图片,按钮或div设置绝对定位,总之,是要让上传文件按钮和用户指定的按钮重合. (2)给上传图片标签设置大大小,使之和与它重叠的图片,按钮

  • js实现上传图片预览的方法

    本文实例讲述了js实现上传图片预览的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: function PreviewImage(imgFile) {     var filextension=imgFile.value.substring(imgFile.value.lastIndexOf("."),imgFile.value.length);     filextension=filextension.toLowerCase();     if ((filext

  • JavaScript图片上传并预览的完整实例

    目录 一.前端界面是通过jqgrid展示的 二.jqgrid特性 三.代码实例 1.jqgrid页面展示 2.模块页面 3.ajax实现异步请求 五.效果展示 总结 一.前端界面是通过jqgrid展示的 jqgrid是典型的B/C架构(浏览器/服务器模式),服务器端只需提供数据管理,浏览器只需负责数据显示. jqGrid是用ajax实现对请求和响应的处理,支持局部实时刷新. 二.jqgrid特性 通过配置url地址数据显示格式 支持行编辑,列搜索过滤 支持分页 添加表单支持文件上传 链式调用 三

  • JavaScript实现图片上传并预览并提交ajax

    本文实例为大家分享了JavaScript实现图片上传并预览并提交ajax的具体代码,供大家参考,具体内容如下 图片上传并预览 HTML <div class="file-box"> <img id="preview" /> <input type="text" id="imgfield" class="txt" placeholder="预览"> &l

  • javascript input图片上传及预览,FileReader预览图片

    FileReader是前端进行文件处理的一个重要的Api,特别是在对图片的处理上,如果你想知道图片的处理原理,你就永远不可能绕过它. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .file-ipt{position: absolute;left

  • ASP.NET MVC图片上传前预览简单实现

    本文实例为大家分享了图片上传前预览并获取图片文件名和图片字节大小的具体实现代码,供大家参考,具体内容如下 在控制器中创建一个Action: 在Views目录下对应的控制器名称下创建视图PreViewing: 上图中 标记1,引用jQuery类库. 标记2,选择文件. 标记3,预览图片. 标记4,显示图片文件名和图片字节大小. 标记5,是Javascript代码...... 本例预览: 以上就是本文的全部内容,希望对大家的学习有所帮助.

  • js HTML5多图片上传及预览实例解析(不含前端的文件分割)

    本文实例为大家分享了js HTML5多图片上传及预览实例,供大家参考,具体内容如下 主要运用  1.HTML5 files可以选择多文件,以及获取多文件信息  2.XMLHTTPRequest对象,发送HTTP传输请求  3.将每一个文件放在FormData,进行传输  4.利用readAsDataURL将图片内容直接变成url,放在img标签的src当中,生成可预览的图片 html+css+js代码 <!DOCTYPE html> <head> <meta http-equ

  • jquery实现图片上传之前预览的方法

    本文实例讲述了jquery实现图片上传之前预览的方法.分享给大家供大家参考.具体实现方法如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

  • vue.js 图片上传并预览及图片更换功能的实现代码

    这里讲解是图片上传和图片预览.主要是围绕我们常用功能的列子做讲解 ,并且没有格外引入其他js 所以你复制过去做简单修改便可以看到效果 效果图: 样式以及效果图一并展示 1.HTML <div class="rz-picter"> <img :src="avatar" class="img-avatar"> <input type="file" name="avatar" id=

  • vue+node实现图片上传及预览的示例方法

    本文介绍了vue+node实现图片上传及预览的示例方法,分享给大家,具体如下: 先上效果图 上代码 html部分主要是借助了weui的样式 <template> <div> <myheader :title="'发布动态'"> <i class="iconfont icon-fanhui1 left" slot="left" @click="goback"></i>

  • jQuery+HTML5实现图片上传前预览效果

    本文实例讲述了jQuery+HTML5实现图片上传前预览效果.分享给大家供大家参考.具体如下: 这里主要是使用HTML5 的File API,建立一個可存取到该file的url,一个空的img标签,ID为img0,把选择的文件显示在img标签中,实现图片预览功能.请选择支持HTML API的浏览器,比如谷歌Chrome和火狐等. 运行效果如下图所示: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-html5-pic-upload-pre-view-c

随机推荐