• ext上传文件到mysql上


    不废话,上代码:

    controller如下:

    /**
         * 上传附件
         * @param request
         * @param baseBlob
         * @param response
         */
        @RequestMapping(value="/uploadSeal",method=RequestMethod.POST)
        @ResponseBody
        public void addBaseBlob(HttpServletRequest request,Seal seal,HttpServletResponse response,@RequestParam(required=false) String sealId){
            int flag=0;
            try {
                request.setCharacterEncoding("utf-8");
            } catch (UnsupportedEncodingException e1) {
                e1.printStackTrace();
            }
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;
            MultipartFile multipartFile = multipartRequest.getFile("file");
            
             // 上传的文件名 //需要保存
            String uploadFileName = multipartFile.getOriginalFilename();
            // 获取文件后缀名 //需要保存
            String fileType = StringUtils.substringAfterLast(uploadFileName, ".");
            if("PNG".equalsIgnoreCase(fileType)||"JPEG".equalsIgnoreCase(fileType)||"JPG".equalsIgnoreCase(fileType)){
                if(multipartFile!=null&&!"".equals(multipartFile.getName())){
                    File file = new File(request.getSession().getServletContext()
                            .getRealPath("WEB-INF"+File.separator+"upload"), multipartFile.getOriginalFilename());
                    // 判断文件夹是否存在,不存在则创建
                    if (!file.getParentFile().exists()) {
                        file.getParentFile().mkdirs();
                    }
                    try {
                        String userId=request.getParameter("userId");
                        FileUtils.copyInputStreamToFile(multipartFile.getInputStream(), file);
                        seal.setUpdateUser(((BaseUsers)request.getSession().getAttribute(WebConstants.CURRENT_USER)).getUserId());
                        seal.setUpdateTime(new Date());
                        seal.setSealImage(FileDigest.getBytesFromFile(file));
                        if(StringUtils.isNotBlank(sealId)){
                            seal.setId(sealId);
                            flag = sealService.update(seal);
                        }else{
                            flag=sealService.insert(seal);
                        }
                        
                    } catch (IOException e) {
                        e.printStackTrace();
                        flag=0;
                    }finally{
                        file.delete();
                    }
                }
                
                response.setContentType("text/html;charset=utf-8;");
                try {
                    if(flag==1)
                        response.getWriter().write("{success:true,msg:""+seal.getId()+""}");
                    else
                        response.getWriter().write("{success:false,msg:"上传失败!"}");
                } catch (IOException e) {
                    e.printStackTrace();
                }finally{
                    
                    try {
                        response.getWriter().flush();
                        response.getWriter().close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }else{
                response.setContentType("text/html;charset=utf-8;");
                try {
                    response.getWriter().write("{success:false,msg:"格式不正确!"}");
                    response.getWriter().flush();
                    response.getWriter().close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }

    前台ext如下:

    Ext.ns('Ext.seal')
    Ext.seal.SealUploadWindow = Ext.extend(Ext.Window, {
                
                store : null,
                /* 保存路径 */
                uploadUrl : null,
                //grid : null,
                title : '上传印章',
                constructor : function(_config) {
                    Ext.apply(this, _config || {});
                    this.myform = new Ext.FormPanel({
                                fileUpload : true, // 默认为图片上传
                                id : Ext.id(),
                                baseCls : 'x-plain',// 基本效果为纯色效果
                                bodyStyle : 'padding-top:10px;padding-left:0px;',
                                closealbe : true,
                                // 里面组件的布局方式
                                // layout : 'fit',
                                height : 400,
                                items : [{
                                            labeWidth : 80,
                                            xtype : 'textfield',
                                            name : 'file',
                                            inputType : 'file',
                                            allowBlank : false,
                                            width : 200,
                                            fieldLabel : '上传印章'
                                        },{
                                                xtype : 'textfield',
                                                name : 'sealId',
                                                hidden : true
                                            }]
                            });
                    this.url = {
                        uploadUrl : ctx+'/seal/uploadSeal'
                    }
    
                    Ext.seal.SealUploadWindow.superclass.constructor.call(this, {
                                width : 350,
                                height : 150,
                                title : '上传印章',
                                frame : true,
                                // 可以关闭
                                closable : true,
                                // 关闭 按钮 销毁 窗口并销毁所以子控件。这使得Window对象和它的子控件不可 复用.
                                // 如果想复用Window, 设置
                                closeAction: 'hide' ,
                                //closeAction : 'close',
                                // 打开window页面在window页面加了个遮罩层
                                modal : true,
                                // 纯色效果
                                plain : true,
                                // 里面组件的布局方式
                                layout : 'fit',
                                items : [this.myform],
                                buttons : [{
                                            text : '上传印章',
                                            scope : this,
                                            handler : this.uploadPhoto
                                        }, {
                                            text : '重置印章',
                                            scope : this,
                                            handler : function() {
                                                this.myform.getForm().reset();
                                            }
                                        }, {
                                            text : '关闭',
                                            iconCls:'cancel',
                                            scope : this,
                                            handler : function() {
                                                this.hide();
    
                                            }
                                        }]
                            });
    
                },
    
                // 提交表单
                uploadPhoto : function() {
                    if (this.myform.getForm().isValid()) {
                        this.myform.getForm().submit({
                            url : this.url.uploadUrl,
                            method : 'post',
                            waitMsg : '印章上传中...',
                            scope : this,
                            success : function(form,  action) {
                                Ext.Msg.alert('提示', '上传成功!', function() {
                                    var sealId = action.result.msg;
                                    this.myform.getForm().findField('sealId').setValue(sealId); 
                                    this.hide();
                                    
                                        }, this);
                            },
                            failure : function(form, action) {
                                Ext.Msg.alert('提示', action.result.msg, function() {
                                        }, this);
                            }
                        });
                    }
                }
    
            });

    formpanel:

    Ext.ns('Ext.seal');
    Ext.seal.SealFormPanel = new Ext.extend(Ext.form.FormPanel, {
        sealId:null,
        constructor : function(_config) {
            if (_config == null) {
                _config = {};
            }
            this.imgBox = new Ext.BoxComponent({
                xtype : 'box',
                id : 'browseImage',
                name : 'photopath',
                anchor : '20%',
                height : 120,
                width : 240,
                autoEl : {
                    tag : 'img',
                    src : '',
                    style : 'filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);',
                    complete : 'off'
                }
            });
            this.store = new Ext.data.Store();
            this.tempID = Ext.id();
            this.labeID = Ext.id();
    
            Ext.apply(this, _config);
            this.contentPanelId = Ext.id();
            Ext.seal.SealFormPanel.superclass.constructor.call(this, {
                        labelWidth : 80,
                        frame : true,
                        border : false,
                        bodyStyle : 'border:0px;',
                        defaults : {
                            bodyStyle : 'border:0px;',
                            width : 560
    
                        },
                        items : [{
                            layout : 'column',
                            xtype : 'fieldset',
                            title : '详细信息',
                            items : [{
                                columnWidth : .5,
                                defaults : {
                                    // 设置默认类型
                                    xtype : 'textfield',
                                    // 自动调整宽度
                                    anchor : '90%',
                                    disabledClass : 'txtDisabled'
                                },
                                layout : 'form',
                                autoHeight : true,
                                // 分栏中的元素
                                items : [{
                                    name : 'id',
                                    xtype : 'textfield',
                                    hidden : true
                                }, {
                                    fieldLabel : '印章名称',
                                    xtype : 'textfield',
                                    name : 'sealName',
                                    allowBlank : false,
                                    blankText : '请输入印章名称'
                                }, {
                                    fieldLabel : '备注',
                                    xtype : 'textarea',
                                    name : 'remark'
                                },{
                                    xtype:'hidden',
                                    name:'sealId'
                                }]
                            }, {
                                columnWidth : .5,
                                defaults : {
                                    // 设置默认类型
                                    xtype : 'textfield',
                                    // 自动调整宽度
                                    anchor : '90%',
                                    disabledClass : 'txtDisabled'
                                },
                                layout : 'form',
                                autoHeight : true,
                                style : 'margin-left:20px',
                                // 分栏中的元素
                                items : [this.imgBox,{
                                    xtype : 'button',
                                    text : '上传印章',
                                    allowBlank : false,
                                    anchor : '20%',
                                    scope:this,
                                    handler : this.uploadWindow
                                }]
                            }]
                        }],
    //                    items : [this.imgBox,{
    //                                xtype : 'button',
    //                                text : '上传印章',
    //                                allowBlank : false,
    //                                anchor : '20%',
    //                                scope:this,
    //                                handler : this.uploadWindow
    //                            },{
    //                                name : 'id',
    //                                xtype : 'textfield',
    //                                hidden : true
    //                            }, {
    //                                fieldLabel : '印章名称',
    //                                xtype : 'textfield',
    //                                name : 'sealName',
    //                                allowBlank : false,
    //                                blankText : '请输入印章名称'
    //                            }, {
    //                                fieldLabel : '备注',
    //                                xtype : 'textarea',
    //                                name : 'remark'
    //                            },{
    //                                xtype:'hidden',
    //                                name:'sealId'
    //                            }
    //                    ]
                    });
        },
        uploadWindow : function (){
            if (this.myUploadWin == null) {
                this.myUploadWin = new Ext.seal.SealUploadWindow({
                });
                
            }
            this.myUploadWin.on('show', function(win) {
                win.myform.getForm().reset();
                if(this.sealId){
                    win.myform.getForm().findField('sealId').setValue(this.sealId);
                }
            }, 
            this);
            this.myUploadWin.show();
            this.myUploadWin.on('hide', function(win) {
                var sealId2 = win.myform.getForm().findField('sealId').getValue();
                this.getForm().findField('sealId').setValue(sealId2);
                Ext.getCmp('browseImage').getEl().dom.src=ctx+"/seal/download?sealId="+sealId2+"&thisTime="+Date.parse(new Date());
                
                }, 
                this);
        }
    })

    winpanel:

    Ext.ns('Ext.seal');
    Ext.seal.SealWin = Ext.extend(Ext.Window, {
                store : null,
                saveUrl : null,
                sealId:null,
                constructor : function(config) {
                    if (config == null) {
                        config = {}
                    }
                    Ext.apply(this, config);
                    
                    this.formPanel = new Ext.seal.SealFormPanel({
                        sealId:this.sealId
                    });
                    
                    Ext.seal.SealWin.superclass.constructor.call(this,
                            {
                                width : 600,
                                height : 280,
                                closeAction : 'hide',
                                plain : true,
                                modal : true,
                                resizable : true,
                                layout:'fit',
                                items : [this.formPanel],
                                buttons : [{
                                            text : '保存',
                                            scope : this,
                                            handler : this.save
                                        }, {
                                            text : '重置',
                                            scope : this,
                                            handler : this.reset
                                        }]
                            });
                },
                save : function() {
                    var form = this.formPanel.getForm();
                    var sealId = form
                    if (!form.isValid()) {
                        return;
                    }
                    // 发送请求
                    this.formPanel.getForm().submit({
                                url : this.saveUrl,
                                method:'post',
                                success : function(form,action) {
                                    Ext.MessageBox.alert('提示',action.result.msg,function(){
                                       this.store.reload();
                                       this.hide();
                                    },this);
                                },
                                scope:this
                            });
                },
                loadRecord : function(record) {
                    this.formPanel.getForm().loadRecord(record);
                },
                reset : function() {
                    this.formPanel.getForm().reset();
                }
            });

    GridPanel:

    Ext.ns('Ext.seal');
    Ext.seal.SealGridPanel= Ext.extend(Ext.grid.GridPanel, {
        actionJson : null,
        pageSize : 20,
        constructor : function(_config) {
            Ext.apply(this, _config || {});
            this.Url = {
                allUrl : ctx + '/seal/queryListForPage',
                insertUrl : ctx + '/seal/insert',
                deleteUrl : ctx + '/seal/delete',
                updateUrl : ctx + '/seal/update',
                findByIdUrl:ctx + '/seal/getSeal',
                isEnableOrNot:ctx + '/seal/isEnableOrNot'
                
            };
            /** 顶部工具栏 */
            this.actionToolBar = new Ext.Toolbar({
                items:[new Ext.Action({
                    text : '新增',
                    scope:this,
                    handler : this.addWindow
                }),'-',new Ext.Action({
                    text : '修改',
                    scope:this,
                    handler : this.modifyWindow
                }),'-',new Ext.Action({
                    text : '删除',
                    scope:this,
                    handler : this.deleteWindow
                }),'-',new Ext.Action({
                    text:'启用',
                    scope:this,
                    handler:this.isEnableTrue
                }),'-',new Ext.Action({
                    text:'停用',
                    scope:this,
                    handler:this.isEnableFalse
                })]
            });
            /** 顶部工具栏*/
    //        this.actionToolBar = new Ext.ActionToolbar({
    //            actionPanel : this,
    //            actionJson : this.actionJson,
    //            deleteFunction : this.deleteWindow,
    //            addFunction : this.addWindow,
    //            editFunction : this.modifyWindow
    //
    //        });
            this.store = new Ext.data.JsonStore({
                        baseParams : {
                            start : 0,
                            limit : this.pageSize
                        },
                        url : this.Url.allUrl,
                        root : 'rows', // Json中的列表数据根节点
                        totalProperty : 'results',
                        fields : ['id', 'updateUser', 'realName','sealName','remark','isEnable','sealImage',{
                                    name : 'updateTime',
                                    type : 'date',
                                    dateFormat : 'time'
                                }]
                    });
            /** 基本信息-选择模式 */
            this.selModel = new Ext.grid.CheckboxSelectionModel({
                    singleSelect:true,
    //                listeners : {
    //
    //                    'rowselect' : function(selectionModel, rowIndex, record) {
    //                        this.actionToolBar.enableEditDelete();
    //                    },
    //                    'rowdeselect' : function(selectionModel, rowIndex,
    //                            record) {
    //                        if (!selectionModel.hasSelection()) {
    //                            this.actionToolBar.disableEditDelete();
    //                        }
    //                    },
    //                    scope : this
    //                }
                    });
            this.colModel = new Ext.grid.ColumnModel([this.selModel,{
                        header : '主键',
                        dataIndex : 'id',
                        hidden : true
                    },{
                        header : '印章名称',
                        dataIndex : 'sealName',
                        width : 150
                    },{
                        header : '启用/停用',
                        dataIndex : 'isEnable',
                        width : 150,
                        renderer:function(value){
                            if(value==1){
                                return "启用";
                            }else if(value==0){
                                return "停用";
                            }
                            return value;
                        }
                    },{
                        header : '修改人',
                        dataIndex : 'realName',
                        width : 150
                    },{
                        header : '修改时间',
                        dataIndex : 'updateTime',
                        width : 150,
                        renderer : Ext.util.Format.dateRenderer('Y-m-d H:i:s')
                    },{
                        header : '备注',
                        dataIndex : 'remark',
                        width : 150
                    },{
                        header : '印章',
                        dataIndex : 'sealImg',
                        200,
                        renderer:function(value,metc,record){
                            return "<img src="+ctx+"/seal/download?sealId="+record.data.id+"&thisTime="+Date.parse(new Date())+" />";
                            //return ctx+"/seal/download?sealId="+record.data.id;
                        }
                    }]);
            this.bbar = new Ext.PagingToolbar({
                        pageSize : this.pageSize,
                        store : this.store,
                        displayInfo : true
                    });
            Ext.seal.SealGridPanel.superclass.constructor.call(this, {
                        store : this.store,
                        cm : this.colModel,
                        sm : this.selModel,
                        tbar : this.actionToolBar,
                        bbar : this.bbar,
                        loadMask : true
            });
            
            this.on('rowdblclick', this.readSeal, this);
            
            this.store.load();
        },
        addWindow : function() {
            var record = this.getSelectionModel().getSelected();
            if (this.addWin == null) {
                this.addWin = new Ext.seal.SealWin({
                    saveUrl : this.Url.insertUrl,
                    store : this.store
                });
                this.addWin.setTitle("新增印章");
            }
            this.addWin.reset();
            this.addWin.show();
            this.addWin.on('show', function(win) {
                Ext.getCmp('browseImage').getEl().dom.src='';
                }, 
                this);
        },
        modifyWindow : function() {
            var record = this.getSelectionModel().getSelected();
            if (record) {
                if (this.editWin == null) {
                    this.editWin = new Ext.seal.SealWin({
                                saveUrl : this.Url.updateUrl,
                                store : this.store,
                                sealId:record.data.id
                            });
                    this.editWin.setTitle("修改印章");
                }
                this.editWin.reset();
                this.editWin.show();
                this.editWin.on('show', function(win) {
                    Ext.getCmp('browseImage').getEl().dom.src=ctx+"/seal/download?sealId="+record.data.id+"&thisTime="+Date.parse(new Date());
                    }, 
                    this);
                this.editWin.loadRecord(record);
                
            } else {
                Ext.MessageBox.alert('提示', '请选中一条记录!');
            }
            
        },
        deleteWindow : function() {
            /** 选中的记录 */
            var record = this.getSelectionModel().getSelected();
            if(!record){
                Ext.MessageBox.alert('提示', '请选中一条记录!');
                return;
            }
            Ext.MessageBox.confirm('提示', '您确定要删除选中记录吗?', function(btn) {
                if (btn == 'yes') {
                        Ext.Ajax.request({
                            url : this.Url.deleteUrl,
                            method : 'post',
                            params : {
                                id : record.data.id
                            },
                            success : function(response, options) {
                                var text = Ext.util.JSON.decode(response.responseText);
                                Ext.MessageBox.alert('提示', text.msg,function(){
                                    if(text.success){
                                        this.store.reload();
                                    }
                                },this);
                            },
                            failure : function(response, options) {
                                Ext.MessageBox.alert('提示', '请求失败!');
                            },
                            scope : this
                        });        
                }
            }, this);
        },
        /** 查看印章 */
        readSeal : function(grid, rowIndex, e) {
            var rec = grid.getStore().getAt(rowIndex);
            if (rec == undefined) {
                Ext.Msg.alert("提示", "每次只能且必须查看一条记录");
            } else {
                if (this.readWin == null) {
                    this.readWin = new Ext.seal.SealReadWindow({
                                sealId:rec.data.id
                            });
                    this.readWin.setTitle('查看详细');
                }
                this.readWin.show();
                Ext.Ajax.request({
                            url : this.Url.findByIdUrl,
                            method : 'post',
                            params : {
                                sealId : rec.data.id
                            },
                            success : function(response, opts) {
                                var content = Ext.decode(response.responseText);
                                this.readWin.loadSeal(content);
                            },
                            scope : this
                        });
            }
        },
        /**启用*/
        isEnableTrue:function(){
            var record = this.getSelectionModel().getSelected();
            if(!record){
                Ext.MessageBox.alert('提示', '请选中一条记录!');
                return;
            }else if(record.data.isEnable==1){
                Ext.MessageBox.alert('提示','选中行已经启用!');
                return;
            }
            Ext.Ajax.request({
                url : this.Url.isEnableOrNot,
                method : 'post',
                params : {
                    id : record.data.id,
                    isEnable:1
                },
                success : function(response, options) {
                    var text = Ext.util.JSON.decode(response.responseText);
                    Ext.MessageBox.alert('提示', text.msg,function(){
                        if(text.success){
                            this.store.reload();
                        }
                    },this);
                },
                failure : function(response, options) {
                    Ext.MessageBox.alert('提示', '请求失败!');
                },
                scope : this
            });    
        },
        /**停用*/
        isEnableFalse:function(){
            var record = this.getSelectionModel().getSelected();
            if(!record){
                Ext.MessageBox.alert('提示', '请选中一条记录!');
                return;
            }else if(record.data.isEnable==0){
                Ext.MessageBox.alert('提示','选中行已经停用!');
                return;
            }
            Ext.Ajax.request({
                url : this.Url.isEnableOrNot,
                method : 'post',
                params : {
                    id : record.data.id,
                    isEnable:0
                },
                success : function(response, options) {
                    var text = Ext.util.JSON.decode(response.responseText);
                    Ext.MessageBox.alert('提示', text.msg,function(){
                        if(text.success){
                            this.store.reload();
                        }
                    },this);
                },
                failure : function(response, options) {
                    Ext.MessageBox.alert('提示', '请求失败!');
                },
                scope : this
            });    
        }
    });

    extreturn实体类:

    package cn.edu.hbcf.common.vo;
     
    /**
     * Ext Ajax 返回对象
     * 
     * @author LiPenghui
     * @date 2012-02-21 19:30:00
     * 
     */
    
    public class ExtReturn {
    
        private boolean success; // 是否成功
        private Object msg; // 返回消息
        private Object otherObject;// 其他对象
    
        public ExtReturn() {
    
        }
    
        /**
         * 是否更新成功的构造方法
         * 
         * @param success
         *            是否成功
         * @param msg
         *            消息
         */
        public ExtReturn(boolean success, Object msg) {
            this.success = success;
            this.msg = msg;
            this.otherObject = "";
        }
    
        /**
         * 是否更新成功的构造方法
         * 
         * @param success
         *            是否成功
         * @param msg
         *            消息
         * @param otherObject
         *            其他对象
         */
        public ExtReturn(boolean success, Object msg, Object otherObject) {
            this.success = success;
            this.msg = msg;
            this.otherObject = otherObject;
        }
    
        /**
         * 异常时的构造函数
         * 
         * @param errormsg
         *            异常消息
         */
        public ExtReturn(Object errormsg) {
            this.success = false;
            this.msg = false;
            this.otherObject = "";
        }
    
        /**
         * 判断是否成功
         * 
         * @return
         */
        public boolean isSuccess() {
            return success;
        }
    
        /**
         * 设置返回是否成功的状态
         * 
         * @param success
         */
        public void setSuccess(boolean success) {
            this.success = success;
        }
    
        /**
         * 设置其他对象
         * 
         * @return
         */
        public Object getOtherObject() {
            return otherObject;
        }
    
        /**
         * 获取其他对象
         * 
         * @param otherObject
         */
        public void setOtherObject(Object otherObject) {
            this.otherObject = otherObject;
        }
    
        /**
         * 获取返回的消息
         * 
         * @return
         */
        public Object getMsg() {
            return msg;
        }
    
        /**
         * 设置返回的消息
         * 
         * @param msg
         */
        public void setMsg(Object msg) {
            this.msg = msg;
        }
    }

    文件下载controller:

    /**
         * 下载附件
         * @param response
         * @param request
         * @param blobId 附件主键
         * @throws UnsupportedEncodingException
         */
        @RequestMapping("/download")
        public void download (HttpServletResponse response,HttpServletRequest request,String sealId,String thisTime) throws UnsupportedEncodingException{
            Seal seal = sealService.getSeal(sealId);
            InputStream inputStream=new ByteArrayInputStream(seal.getSealImage());
    
            byte[] b = new byte[1024];
            int len = -1;
            OutputStream out = null;
             String filename="";
             if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") >0)
                 filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器
             else
                 filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
             response.reset();//清除首部的空白行
             //下载的文件内容
        //     response.setContentType("application/x-msdownload");
        //     response.setContentType("text/html;charset=utf-8;");
             response.setContentType("image/jpeg;charset=utf-8");
             //下载的文件头部内容(自动下载)
    //         response.setHeader("Content-Disposition", "attachment;filename=" + filename.replace(" ", "_") );
            //输出文件内容
            response.setHeader("Content-type", "attachment;filename=" + filename.replace(" ", "_") );
        //    response.setHeader("Connection", "close");
            try {
                while ((len = inputStream.read(b, 0, 1024)) != -1) {
                    out = response.getOutputStream();
                    out.write(b, 0, len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (out != null) {
                    try {
                        out.flush();
                        out.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                if(inputStream!=null){
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                }
            }
        }
    /**
         * 下载附件
         * @param response
         * @param request
         * @param blobId 附件主键
         * @throws UnsupportedEncodingException
         */
        @RequestMapping("/download")
        public void download (HttpServletResponse response,HttpServletRequest request,String sealId,String thisTime) throws UnsupportedEncodingException{
            Seal seal = sealService.getSeal(sealId);
            InputStream inputStream=new ByteArrayInputStream(seal.getSealImage());
    
            byte[] b = new byte[1024];
            int len = -1;
            OutputStream out = null;
             String filename="";
             if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") >0)
                 filename = URLEncoder.encode(filename, "UTF-8");//IE浏览器
             else
                 filename = new String(filename.getBytes("UTF-8"), "ISO8859-1");
             response.reset();//清除首部的空白行
             //下载的文件内容
        //     response.setContentType("application/x-msdownload");
        //     response.setContentType("text/html;charset=utf-8;");
             response.setContentType("image/jpeg;charset=utf-8");
             //下载的文件头部内容(自动下载)
    //         response.setHeader("Content-Disposition", "attachment;filename=" + filename.replace(" ", "_") );
            //输出文件内容
            response.setHeader("Content-type", "attachment;filename=" + filename.replace(" ", "_") );
        //    response.setHeader("Connection", "close");
            try {
                while ((len = inputStream.read(b, 0, 1024)) != -1) {
                    out = response.getOutputStream();
                    out.write(b, 0, len);
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (out != null) {
                    try {
                        out.flush();
                        out.close();
                    } catch (IOException e1) {
                        e1.printStackTrace();
                    }
                if(inputStream!=null){
                    try {
                        inputStream.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                }
            }
        }

    mapper:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="cn.edu.hbcf.plugin.seal.dao.SealMapper">
    
        <!-- 查询所有的印章管理数据 -->
        <select id="queryListForPage" resultType="cn.edu.hbcf.plugin.seal.pojo.Seal" parameterType="cn.edu.hbcf.common.vo.Criteria">
            SELECT 
              l.id id,
              l.update_user updateUser,
              l.update_time updateTime,
              l.seal_name sealName,
              l.remark remark,
              l.is_enable isEnable,
              l.seal_image sealImage,
              s.real_name realName 
            FROM
              seal l 
              LEFT JOIN base_users s 
                ON l.update_user = s.user_id 
            WHERE l.seal_name IS NOT NULL 
              AND seal_name != '' 
            <if test="condition.limit != null">
                <![CDATA[ limit #{condition.start},#{condition.limit} ]]>
            </if>
        </select>
        
        <!-- 查询所有的印章管理数据的总数 -->
        <select id="getTotalCount" resultType="int" parameterType="cn.edu.hbcf.common.vo.Criteria">
            SELECT 
              count(*)
            FROM
              seal l 
        </select>
        <!-- 新增印章数据 -->
        <insert id="insert" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
            <selectKey resultType="String" keyProperty="id" order="BEFORE">
                select replace(uuid(), '-', '') from dual
            </selectKey>
            INSERT INTO seal(id,update_user,update_time,seal_name,remark,is_enable,seal_image) 
            VALUES(#{id},#{updateUser},#{updateTime},#{sealName},#{remark},#{isEnable},#{sealImage})
        </insert>
        
        <!-- 修改印章数据 -->
        <update id="update" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
            UPDATE seal SET update_user=#{updateUser},update_time=#{updateTime},
            <if test="sealName!=null">seal_name=#{sealName},</if>
            <if test="remark!=null">remark=#{remark},</if>
            <if test="isEnable!=null">is_enable=#{isEnable},</if>
            <if test="sealImage!=null">seal_image=#{sealImage}</if>
            WHERE id=#{id}
        </update>
        
        <!-- 批量删除印章数据 -->
        <delete id="delete">
            delete from seal 
            <where>
                id in
                <foreach collection="ids" item="item" index="index" 
                    open="(" separator="," close=")">#{item}</foreach>
            </where>
        </delete>
        
        <!-- 新增印章图片到数据库中 -->
        <insert id="insertSeal" parameterType="String">
            <selectKey resultType="String" keyProperty="id" order="BEFORE">
                select replace(uuid(), '-', '') from dual
            </selectKey>
            insert into seal(id,seal_image) values(#{id},#{sealImage})
        </insert>
        
        <!-- 修改印章图片 -->
        <update id="updateSeal" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
            update seal set seal_image=#{sealImage} where id=#{id} 
        </update>
        
        <!-- 根据Id查询信息-->
        <select id="getSeal" resultType="cn.edu.hbcf.plugin.seal.pojo.Seal" parameterType="java.lang.String">
            SELECT 
              l.id id,
              l.update_user updateUser,
              l.update_time updateTime,
              l.seal_name sealName,
              l.remark remark,
              l.is_enable isEnable,
              l.seal_image sealImage,
              s.real_name realName 
            FROM
              seal l
              LEFT JOIN base_users s 
                ON l.update_user = s.user_id
            WHERE l.id = #{id}
        </select>
        
        <!-- 启用或者停用 -->
        <update id="isEnableOrNot" parameterType="cn.edu.hbcf.plugin.seal.pojo.Seal">
        UPDATE seal SET is_enable=#{isEnable}
            WHERE id=#{id}
        </update>
    </mapper>
  • 相关阅读:
    个人总结
    团队作业五
    个人项目五:个人回顾
    第二次冲刺
    第一次冲刺
    猜数字1
    随机数
    个人作业
    课后作业1
    作业
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/4978244.html
Copyright © 2020-2023  润新知