java DB2数据库Blob型字段读取 Ext页面

某博友为其公司做的一个吧图片直接存储进数据库的功能,现分享给大家。

环境:Tomcat5.5或6.0
      jdk1.6.0_14
      应该是iBATIS 2.X
      DB2 8.1
      ext3.0
      DWR

流程:先使用一个servlet上传至项目的服务器,然后再读取项目的的路径,获取上传的文件,读取文件流转化成能存储的Byte类型,通过
iBATIS写入DB2数据库


servlet web.xml配置:
          imageupload    com.copote.businessManage.upload.fileupload                  imageupload      /imageupload         
ext页面代码:
Html页面:
关键是
其他就是一些基本引用 角色管理                                                                                                                                       

接下...... [ 本帖最后由 modaoshi 于 2009-12-24 09:38 编辑 ]
参与4

4同行回答

接上......插入数据代码: /**     * 添加员工签名     * @param bean     * @return     * @throws IOException     */    public Map insert(ImageBea...显示全部
接上......

插入数据代码:
/**     * 添加员工签名     * @param bean     * @return     * @throws IOException     */    public Map insert(ImageBean bean) throws IOException {        Map map = new HashMap();        boolean value = true;        try {            Sql.getSqlMapClient().insert("insert.image.bean", bean);            map.put("msg", "增加成功");            value = true;        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();            map.put("msg", "增加失败");            value = false;        }        map.put("success", value);        return map;    }
复制代码
核心类: /**     * 文件转成字节数组     *     * @param url     * 文件路径     * @return     * @throws IOException     */    public static byte[] FileToByte(String url) throws IOException {        BufferedInputStream in = new BufferedInputStream(new FileInputStream(                url));        ByteArrayOutputStream out = new ByteArrayOutputStream(1024);        byte[] temp = new byte[1024];        int size = 0;        while ((size = in.read(temp)) != -1) {            out.write(temp, 0, size);        }        in.close();        byte[] content = out.toByteArray();        return content;    }
复制代码
Ibatis:                 insert into tbpe_employeesign            (signcode, userid, signnote, signimg)        values            (nextval for q_signcode, #userid#, #signnote# ,#signimg#)   

接下......收起
2009-12-24
浏览1082
接上......fileupload:关键代码: //文件转成字节blob型bean.setSignimg(new ImageManage().FileToByte(uploadPath + fileName));new ImageManage().insert(bean);package com.copote.businessManage.upload;import java.io.File;import java.io.FileInputStream;import ja...显示全部
接上......

fileupload:
关键代码:
//文件转成字节blob型bean.setSignimg(new ImageManage().FileToByte(uploadPath + fileName));new ImageManage().insert(bean);package com.copote.businessManage.upload;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.HashMap;import java.util.Iterator;import java.util.List;import javax.servlet.*;import javax.servlet.http.*;import org.apache.commons.fileupload.*;import com.copote.Frame.Sql;import com.copote.businessManage.employee.bean.EmployeeInfo;import com.copote.businessManage.employee.dao.EmployeeManage;import com.copote.businessManage.uploadImage.bean.ImageBean;import com.copote.businessManage.uploadImage.dao.ImageManage;import com.lowagie2.text.Image;public class fileupload extends HttpServlet {    /**         *         */    private static final long serialVersionUID = 7440302204266787092L;    String path = this.getClass().getClassLoader().getResource("/").getPath();    String tempPath = path.substring(0, path.length() - 17) + "/upload/tmp/"; // 用于存放临时文件的目录    public fileupload() {        super();        System.out.println("文件上传启动");    }    public void destroy() {        super.destroy(); // Just puts "destroy" string in log        // Put your code here    }    public void init() throws ServletException {        System.out.println("文件上传初始化...");    }    public void doPost(HttpServletRequest request, HttpServletResponse response)            throws IOException, ServletException {        try {            String uploadPath = path.substring(0, path.length() - 17)                    + "/upload/"; // 用于存放上传文件的根目录            File FileFoldersUpload = new File(uploadPath);            //判断是否有upload文件夹            if (!FileFoldersUpload.exists())                FileFoldersUpload.mkdir();            String stylePath = request.getParameter("stylePath");            File FileFoldersImage = new File(uploadPath+stylePath);            //判断是否有upload/image文件夹            if (!FileFoldersImage.exists())                FileFoldersImage.mkdir();            File FileFoldersTmp = new File(uploadPath+"tmp");            //判断是否有upload/tmp文件夹            if (!FileFoldersTmp.exists())                FileFoldersTmp.mkdir();            if (stylePath == null)                stylePath = "";            String picName = request.getParameter("id");            if (stylePath != null || stylePath != "null" || stylePath != "") {                uploadPath = uploadPath + stylePath + "/";            }            System.out.println("---------------uploadPath:" + uploadPath);            System.out.println("开始进行文件上传");            DiskFileUpload fu = new DiskFileUpload();            fu.setSizeMax(4194304); // 设置最大文件尺寸,这里是4MB            fu.setSizeThreshold(4096); // 设置缓冲区大小,这里是4kb            fu.setRepositoryPath(tempPath); // 设置临时目录            List fileItems = fu.parseRequest(request); // 得到所有的文件:            Iterator i = fileItems.iterator();            // 依次处理每一个文件:            String filename = null;            while (i.hasNext()) {                FileItem fi = (FileItem) i.next();                String fileName = fi.getName();// 获得文件名,这个文件名包括路径:                //上传中文文件名                fileName = new String(fileName.getBytes("gbk"), "Utf-8");                if (fileName != null) {                    // 在这里可以记录用户和文件信息                    // 此处应该定义一个接口(CallBack),用于处理后事。                    // 写入文件a.txt,你也可以从fileName中提取文件名:                    String extfile = "sss"                            + fileName.substring(fileName.indexOf(".")); // .jpg                    extfile = extfile.substring(extfile.length() - 5);                    extfile = extfile.substring(extfile.indexOf(".")); // .jpg                    System.out.println("文件后缀名:" + extfile);                    if (checkFileType(extfile)) {                        File files = new File(uploadPath + fileName);                        String row = new ImageManage().RowByUserid(request                                .getParameter("id"));                        System.out.println("行数" + row);                        System.out.println(request.getParameter("post"));                        //判断是否只有一个签名和是否是编辑                        if (row.equals("0") || request.getParameter("post").equals("edit")) {                            if(request.getParameter("post").equals("edit")){                                String[] userid = new String[]{request                                        .getParameter("id")};                                //删除原来的签名                                new ImageManage().deleteImage(userid);                                fi.write(files);                                filename = fileName;                                response.setContentType("text/html;charset=gbk");                                response.getWriter().print(                                        "{'success':true,'message':'修改成功','filename':'"                                                + filename + "'}");                            }else{                                fi.write(files);                                filename = fileName;                                response.setContentType("text/html;charset=gbk");                                response.getWriter().print(                                        "{'success':true,'message':'上传成功','filename':'"                                                + filename + "'}");                            }                            System.out.println("图片上传成功");                            System.out.println(uploadPath);                            System.out.println(fileName);                            ImageBean bean = new ImageBean();                            bean.setSignnote("");                            bean.setUserid(request.getParameter("id"));                            //文件转成字节blob型                            bean.setSignimg(new ImageManage()                                    .FileToByte(uploadPath + fileName));                            new ImageManage().insert(bean);                            FileInputStream str = new FileInputStream(files);                            EmployeeInfo employeeInfo = new EmployeeInfo();                        } else {                            response.setContentType("text/html;charset=gbk");                            response.getWriter().print(                                            "{'success':false,'message':'上传失败,只能上传一个签名'}");                        }                    } else {                        response.setContentType("text/html;charset=gbk");                        response.getWriter().print(                                "{'success':false,'message':'上传失败,请检查文件类型'}");                    }                }            }            // 跳转到上传成功提示页面        } catch (Exception e) {            e.printStackTrace();            response.setContentType("text/html;charset=utf-8");            response.getWriter().print("{'success':false,'message':'上传失败'}");            // 可以跳转出错页面        }    }    // .bmp,.jpeg,.gif,.png,.jpg    public boolean checkFileType(String fileType) {        if (fileType.equalsIgnoreCase(".jpg"))            return true;        if (fileType.equalsIgnoreCase(".bmp"))            return true;        if (fileType.equalsIgnoreCase(".jpeg"))            return true;        if (fileType.equalsIgnoreCase(".gif"))            return true;        if (fileType.equalsIgnoreCase(".png"))            return true;        if (fileType.equalsIgnoreCase(".dll"))            return true;        if (fileType.equalsIgnoreCase(".exe"))            return true;        if (fileType.equalsIgnoreCase(".txt"))            return true;        return false;    }}

接下......收起
2009-12-24
浏览1129
接上......Java:ImageBean:关键代码:private byte[] signimg; package com.copote.businessManage.uploadImage.bean;import java.sql.Blob;import oracle.sql.BLOB;public class ImageBean {    private String signcode;    private String signnote;...显示全部
接上......

Java:

ImageBean:
关键代码:private byte[] signimg;
package com.copote.businessManage.uploadImage.bean;import java.sql.Blob;import oracle.sql.BLOB;public class ImageBean {    private String signcode;    private String signnote;    private byte[] signimg;    private String image;    private String orgname;    public String getOrgname() {        return orgname;    }    public void setOrgname(String orgname) {        this.orgname = orgname;    }    private String userid    ;//登录账号    private String emname    ;//员工姓名    private String emnumber    ;//员工工号    private String emcode    ;//员工编码    private String orgcode    ;//机构编码    private String o_orgcode;//机构名称    private String decode    ;//部门编码    private String emsta    ;//员工岗位    private String emstatus    ;//员工状态    private String mobilenmber    ;//手机号码    private String officetel    ;//办公电话    private String email    ;//电子邮箱    private String signature    ;//签章名称    public String getEmname() {        return emname;    }    public void setEmname(String emname) {        this.emname = emname;    }    public String getEmnumber() {        return emnumber;    }    public void setEmnumber(String emnumber) {        this.emnumber = emnumber;    }    public String getEmcode() {        return emcode;    }    public void setEmcode(String emcode) {        this.emcode = emcode;    }    public String getOrgcode() {        return orgcode;    }    public void setOrgcode(String orgcode) {        this.orgcode = orgcode;    }    public String getO_orgcode() {        return o_orgcode;    }    public void setO_orgcode(String oOrgcode) {        o_orgcode = oOrgcode;    }    public String getDecode() {        return decode;    }    public void setDecode(String decode) {        this.decode = decode;    }    public String getEmsta() {        return emsta;    }    public void setEmsta(String emsta) {        this.emsta = emsta;    }    public String getEmstatus() {        return emstatus;    }    public void setEmstatus(String emstatus) {        this.emstatus = emstatus;    }    public String getMobilenmber() {        return mobilenmber;    }    public void setMobilenmber(String mobilenmber) {        this.mobilenmber = mobilenmber;    }    public String getOfficetel() {        return officetel;    }    public void setOfficetel(String officetel) {        this.officetel = officetel;    }    public String getEmail() {        return email;    }    public void setEmail(String email) {        this.email = email;    }    public String getSignature() {        return signature;    }    public void setSignature(String signature) {        this.signature = signature;    }    public String getImage() {        return image;    }    public void setImage(String image) {        this.image = image;    }    public String getSigncode() {        return signcode;    }    public void setSigncode(String signcode) {        this.signcode = signcode;    }    public String getUserid() {        return userid;    }    public void setUserid(String userid) {        this.userid = userid;    }    public String getSignnote() {        return signnote;    }    public void setSignnote(String signnote) {        this.signnote = signnote;    }    public byte[] getSignimg() {        return signimg;    }    public void setSignimg(byte[] signimg) {        this.signimg = signimg;    }}

接下......收起
2009-12-24
浏览1055
接上......Js页面:关键代码:url: '../../imageupload?stylePath=image&post=add&id='+getRequestParame("id"),其他是一些布局 function upload(fb){    if(addPanel.getForm().isValid()){        alert(addPanel.items.items[0]...显示全部
接上......

Js页面:
关键代码:url: '../../imageupload?stylePath=image&post=add&id='+getRequestParame("id"),
其他是一些布局
function upload(fb){    if(addPanel.getForm().isValid()){        alert(addPanel.items.items[0].getValue());        addPanel.getForm().submit({                    success: function(fp, action){                        //Ext.Msg.alert('信息', action.result.message);                        //alert(parent.dbsx_panel);                        alert(uploadwindow.id);                    },                    failure: function(fp, action){                        Ext.Msg.alert('错误', action.result.message);                    }                });                }}function createAddPanel(){        Ext.QuickTips.init();        Ext.form.Field.prototype.msgTarget = 'side';    var fp = new Ext.FormPanel({            fileUpload: true,            width: 500,            frame: true,            title: '上传签名',            autoHeight: true,            bodyStyle: 'padding: 10px 10px 0 10px;',            labelWidth: 50,            url: '../../imageupload?stylePath=image&post=add&id='+getRequestParame("id"),            defaults: {                anchor: '95%',                allowBlank: false,                msgTarget: 'side'            },            items: [{                    xtype: 'textfield',                    fieldLabel: '文件名',                    name: 'file',                    inputType: 'file',  //ļ                    anchor:'95%'            }],                buttons: [{                text: '确定',                handler: function(){                    if(fp.getForm().isValid()){        //alert(fp.items.items[0].getValue());        fp.getForm().submit({                    success: function(fp, action){                        parent.alertMsg(action.result.message,'信息');                        parent.reloadData();                        parent.window_add.close();                        //alert(uploadwindow.id);                    },                    failure: function(fp, action){                        Ext.Msg.alert('错误', action.result.message);                    }                });                }                }            },{                text: '重置',                handler: function(){                    fp.getForm().reset();                }            }]        });    fp.render("addPanel");}Ext.onReady(function(){Ext.QuickTips.init();    Ext.BLANK_IMAGE_URL = '../../images/s.gif';    createAddPanel();});

接下......收起
2009-12-24
浏览976

提问者

modaoshi
擅长领域: 数据库

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2009-12-24
  • 关注会员:0 人
  • 问题浏览:6928
  • 最近回答:2009-12-24
  • X社区推广