当前位置: 首页 > news >正文

国产麒麟、uos在线编辑数据库中的文件

在某些项目中,数据库的文档表中使用了二进制流字段(blob)来保存Office文档,PageOffice也是可以支持在线打开此类二进制流文件的。

首先,编写一个下载文件的后台方法,比如:openStream;

然后,把此openStream方法的url地址传递给PageOfficeCtrl对象的webOpen的第一个参数即可打开;

最后,保存文件时,调用FileSaver对象的getFileBytes()或getFileStream()获取到文件二进制流并保存到数据库中。

后端代码

  1. 编写下载文件的后台方法:openStream;
    @RequestMapping(value = "openStream", method = RequestMethod.GET)
    public void openStream(HttpServletRequest request, HttpServletResponse response) throws SQLException, ClassNotFoundException, IOException {String id = request.getParameter("id");Class.forName("org.sqlite.JDBC");String strUrl = "jdbc:sqlite:" + ResourceUtils.getURL("classpath:").getPath() + "static/demodata/DataBase.db";Connection conn = DriverManager.getConnection(strUrl);Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery("select * from stream where id = " + id);if (rs.next()) {//******读取数据库中文件流 开始*******************************byte[] imageBytes = rs.getBytes("Word");int fileSize = imageBytes.length;response.reset();// application/msword, application/x-excel, application/ms-powerpoint, application/pdfresponse.setContentType("application/msword"); response.setHeader("Content-Disposition","attachment; filename=down.doc"); //fileN应该是编码后的(utf-8)response.setContentLength(fileSize);OutputStream outputStream = response.getOutputStream();outputStream.write(imageBytes);outputStream.flush();outputStream.close();outputStream = null;//******读取数据库中文件流 结束*******************************}rs.close();conn.close();
    }
    
  2. 在后端编写代码调用webOpen方法打开文件之前给SaveFilePage属性赋值(设置好保存时由哪个地址接口负责接收处理控件上传的文件流);
    PageOfficeCtrl poCtrl = new PageOfficeCtrl(request);
    poCtrl.setSaveFilePage("saveStream?id=123"); // 设置保存文件的接口地址
    //webOpen的第一个参数支持能够输出下载文件的Url相对地址或者文件在服务器上的磁盘路径两种方式
    //查看详细,请在本站搜索“PageOffice属性或方法中涉及到的URL路径或磁盘路径的说明”
    poCtrl.webOpen("openStream?id=123", OpenModeType.docNormalEdit, "张佚名"); // 打开文件
    

    注意

    对PageOfficeCtrl对象的所有属性赋值或函数调用都必须在WebOpen方法调用之前执行,否则会不生效。

     3.在SaveFilePage属性指向的地址接口saveStream中,创建FileSaver对象处理文件的保存工            作。

@RequestMapping("saveStream")
public void saveStream(HttpServletRequest request, HttpServletResponse response) throws ClassNotFoundException, FileNotFoundException, SQLException {FileSaver fs = new FileSaver(request, response);String id = request.getParameter("id").trim();Class.forName("org.sqlite.JDBC");String strUrl = "jdbc:sqlite:" + ResourceUtils.getURL("classpath:").getPath() + "static/demodata/DataBase.db";Connection conn = DriverManager.getConnection(strUrl);String sql = "UPDATE  Stream SET Word=?  where ID=" + id;PreparedStatement pstmt = null;pstmt = conn.prepareStatement(sql);pstmt.setBytes(1, fs.getFileBytes());//pstmt.setBinaryStream(1, fs.getFileStream(),fs.getFileSize());pstmt.executeUpdate();pstmt.close();conn.close();fs.close();
}

参考链接:https://www.pageoffice.cn/pages/cc29fc/

http://www.dtcms.com/a/524005.html

相关文章:

  • 从零开始的C++学习生活 15:哈希表的使用和封装unordered_map/set
  • 【图像处理基石】通过立体视觉重建建筑高度:原理、实操与代码实现
  • 金融培训网站源码国内可以做的国外兼职网站
  • 东莞网站设计制作网站个人网页设计需求分析
  • 率先发布!浙人医基于KingbaseES构建多院区异构多活容灾新架构
  • CSS 样式用法大全
  • Chrome旧版本下载
  • 浙江省建设网站首页html网站源代码
  • 厦门行业网站建设怎样建立自己的销售网站
  • 网站建设丿选择金手指排名15企业网站的制作公司
  • 结合MAML算法元强化学习
  • 重组蛋白表达的几种类型介绍
  • STM32之TM1638数码管及键盘驱动
  • Windows 10 安装 Docker Desktop
  • 数据的存储
  • GJOI 10.20/10.22 题解
  • Linux:权限(完结)|权限管理|修改权限chmod chown charp|文件类型|拓展
  • (一)仓库创建与配置 - .git 目录的结构与作用
  • Office 2010 64位 补丁 officesp2010-kb2687455 安装步骤详解(附安装包)
  • 建免费网站建设银行网站能不能注销卡
  • springboot中的怎么用JUnit进行测试的?
  • LeetCode:695. 岛屿的最大面积
  • 传奇手游可以使用云手机挂机搬砖吗
  • 2025 OSCAR丨与创新者同频!Apache RocketMQ 邀您共赴开源之约
  • Dify配置本地部署的音频识别模型
  • C# .NET Core中Chart图表绘制与PDF导出
  • 相机拍照的图片怎么做网站呀国内互联网公司排名
  • 微信怎么建设自己网站在单机安装wordpress
  • 实验-Vlan基础
  • Windows CMD 常用命令:7 大核心模块速查指南(附实战场景)