ntko的office控件,ssm框架下上传文件到数据库和页面的回显

在这里用到了对文件流进行的操作,废话不多说,先贴代码出来

首先是文件上传到数据库,这里用到了SqlServer数据库,数据库对应数据类型是image,而JAVA实体则对应的是Byte[](比特数组)。

首先跟正常上传文件一样,页面上写一个form表单

<form method="post" enctype="multipart/form-data" name="frmWordDoc">

<input type="file" name="upLoadFile" >

</form>

这里是一个最简单的form表单,切记标红地方为必须.

如果用到了ntko插件提交方式则为:AwordEditor(此处为自己定义的ntko控件对象,根据自己的进行调整).SaveToURL("${pageContext.request.contextPath}/lcgl/openws?wjid=1","upLoadFile","","",0);

在javascript中添加如上代码也可进行提交。(切记是NTKO插件的提交方式)

 

  @RequestMapping("/openws")
    public void openws(Integer wjid,HttpServletRequest request,@RequestParam("upLoadFile") MultipartFile upLoadFile) throws UnsupportedEncodingException{
        Pt_Wsjd ws = new Pt_Wsjd();

  //下面是对文件流进行控制
         InputStream inputStream;  
        try {
            inputStream = upLoadFile.getInputStream();
             byte[] data = new byte[] {};
             data = inputStreamToByte(inputStream);//将文件保存到字节数组中,方法在下面

    //下面就跟普通的增加方法一样,把值放到实体中
             ws.setF_wsmc(bt);
                ws.setF_wsnr(data);

    //增加方法
                lcglservice.insWs(ws);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }


    private byte[] inputStreamToByte(InputStream is) throws IOException {
        ByteArrayOutputStream bAOutputStream = new ByteArrayOutputStream();
        int ch;
        while((ch = is.read() ) != -1){
        bAOutputStream.write(ch);
        }
        byte data [] =bAOutputStream.toByteArray();
        bAOutputStream.close();
        return data; 返回Byte[]数组
    }

如此 把文件转换成进制放到数据库就搞定了。

接下来我们在做页面的回显。

@RequestMapping("/getwsbyid")
    public void getWsById(Integer f_id,HttpServletResponse response,HttpSession session) throws IOException{
        Pt_Wsjd ws= lcglservice.getWsById(f_id);  //根据id查询一下数据库的值,非常普通的查询方法
        response.reset();
        response.setContentType("applcation/octet-stream");  //确定文件格式,我这里存的是一个Word文档,可根据需求自己更改。
        byte[] byt =ws.getF_wsnr();  //是比特数组接受数据库的image类型的字段,也就是我们刚加到数据库的数据
        java.io.InputStream fileDataStream = new ByteArrayInputStream(byt);  //数据转换成文件流
        javax.servlet.ServletOutputStream myOutputStream = response.getOutputStream();  //输出流
        byte[] fileData = new byte[1024];
        int readCount = 0 ;
        while((readCount=fileDataStream.read(fileData,0,1024))!=-1){
            myOutputStream.write(fileData,0,readCount);  
        }           
        myOutputStream.flush();   //刷新缓冲流
        response.flushBuffer();   
    }

这里我还是用到了ntko的插件进行回显

ntko中的回显方式 在javascript中添加setTimeout("AwordEditor.OpenFromURL('${pageContext.request.contextPath}/lcgl/getwsbyid');",200); URL括号中对应我们刚才写的回显方法即可回显成功。

如有错误,还望各路大神直接指出,接受所有的批评与意见,如有侵权,请直接联系小编,小编会在第一时间内删除侵权内容,谢谢大家。

Qq:11032609

转载于:https://www.cnblogs.com/guobao-/p/9139485.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值