码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-06-05 15:38:50      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:查询   文件流   void   直接   puts   一个   todo   tac   str   

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

首先是文件上传到数据库,这里用到了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

response.reset();
        response.setContentType("applcation/octet-stream");
        byte[] byt =ws.getF_wsnr();
        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的office控件,ssm框架下上传文件到数据库和页面的回显

标签:查询   文件流   void   直接   puts   一个   todo   tac   str   

原文地址:https://www.cnblogs.com/guobao-/p/9139485.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!