从Jackrabbit库中下载文件到web(涉及到inputStream转byte[])

Jackrabbit API Apache Jackrabbit API html ,非常详细, 立即下载

项目中用到了Jackrabbit库的使用,我这块主要负责的是查询,前后台展示的数据大部分是从Jackrabbit库中查询得来的,库的文件以二进制的形式进行的保存,当写到元文件的下载的时候卡壳了,特此记录下。

直接从service层开始

    @Override
    public void getZFile(HttpServletResponse response, String uuid) throws Exception {
        //获取Jackrabbit库的Session
        Session session = jcrServer.getInstance();
        //根据uuid获取节点
        Node rootNode = session.getNodeByIdentifier(uuid);
        Node zNode = rootNode.getNode(JackrabbitConst.ZW);
        //获取节点属性 文件的名称
        String fileName = zNode.getProperty(JackrabbitConst.FN).getString();
        Node fNode = zNode.getNode(JackrabbitConst.FI);
        Node jNode = fNode.getNode(JackrabbitConst.JC);
        Property property = jNode.getProperty(JackrabbitConst.JD);
        //获取这个节点文件的二进制
        Binary binary = property.getBinary();
        InputStream stream = binary.getStream();
        //inputStream转byte[]
        byte[] data = FileUtil.inputStreamToByte(stream);
        //文件的下载
        FileDownload.fileDownload(response, data, fileName);
    }

inputStream转byte[]

        /**
	 * InputStream转byte[]
	 * @param is
	 * @return
	 * @throws IOException
	 */
        public static byte[] inputStreamToByte(InputStream is) throws IOException {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
	    int len = 0;
	    byte[] buffer = new byte[1024];
	    while ((len = is.read(buffer)) != -1) {
		byteArrayOutputStream.write(buffer,0, len);
	    }
	    byte[] data = byteArrayOutputStream.toByteArray();
	    is.close();
	    return data;
        }

文件的下载

        /**
	 * Jackrabbit库中文件的下载
	 * @param response
	 * @param data
	 * @param fileName
	 * @throws Exception
	 */
	public static void fileDownload(final HttpServletResponse response, byte[] data, String fileName) throws Exception{
		fileName = URLEncoder.encode(fileName, "UTF-8");
		response.reset();
		response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
		response.addHeader("Content-Length", "" + data.length);
		response.setContentType("application/octet-stream;charset=UTF-8");
		OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
		outputStream.write(data);
		outputStream.flush();
		outputStream.close();
		response.flushBuffer();
	}

 

jackrabbit 常见问题查询。作为JCR的一个实例,为用户提供一种网络存储、共享、应用的方式 立即下载

相关推荐

jackrabbit教程

jackrabbit教程,主要是网上整合的资源。比较全面。用法等。

Jackrabbit 文件上传下载

1. 在配置文件config.properties中:file.rmi=http://localhost:7000/rmi 2. 下载jackrabbit-standalone-2.10.1.jar,打开服务:java -jar jackrabbit-standalone-2.10.1.jar --port 7000 3. public class JackRabbitF...

weixin_30293135的博客 306

jackrabbit-webdav-2.7.1.zip

iotake-suller.zip,sullerj examples.solrj的扩展,具有更丰富的文档绑定

InputStream转byte[]

InputStream转byte[]其实直接使用IOUtils就可以了,但是需要注意的是,将InputStream粗暴地转成byte[],只适用于文件较小的时候,当如果文件有好几个G,再这样转,内存就要溢出了。

yogima的博客 2万+

Jackrabbit学习篇

从jackrabbit.apache.org把Jackrabbit源代码下载下来,它把各模块分为好几个类包,在本文,我所讲的是Jackrabbit的核心包 jackrabbit-core. 无论你以哪种方式来使用Jackrabbit, jackrabbit-core包必不可少。jackrabbit-core包负责文件的存储,索引的建立。如果有cluster, core包还要负责Jackrabbit集群方面的工作。

Jackrabbit入门实例

一个Eclipse项目, 内含三个Apache Jackrabbit的入门实例, 以及所有需要的包, 在Eclipse中可直接运行。

inputStream转byte数组

转载自:https://blog.youkuaiyun.com/fengsheng5210/article/details/78191734,稍作修改 /** * inputStream转byte数组 * * @param inputStream 输入流对象 * @return byte数组 */ public static byte[] inputStreamToByteArray(InputStream inputStream) { try

qq_36395578的博客 1万+

jackrabbit内容仓库的实例(两个工程)

里面包含两个工程,一个是官方的三个小demo,另一个是在ibm页面看到的实例,比小demo稍微高级一些,希望可以帮助大家迅速入门和理解jackrabbit。

将输入流(InputStream)转换为字节数组(byte[])

这段代码是一个Java方法,用于将输入流(InputStream)转换为字节数组(byte[])。

qq_58341172的博客 1万+

jackrabbit-jcr-commons-2.5.0.zip

streamresource.zip,与getResource()模式相关的方便的抽象。

Knowledgebase-2.0:基于Java的内容存储库,以基于Spring和Jackrabbit的博客样式存储基于文本的信息

知识库2.0 基于Java的内容存储库,以博客样式存储基于文本的信息。 特征 保存基于文本的信息 标记所有条目的可能性 分页支持 全文搜索并突出显示结果 XML导出和导入响应包含XML数据的计算得出的sha-256哈希 可以通过任务栏图标访问的Windows应用程序 REST接口,用于将您的自定义前端连接到“ Knowledgebase 2.0”后端 SSL对HTTP的支持 具有消息属性的语言支持 管理视图以浏览整个存储库 (对称)加密支持 支持Maven和Gradle构建 提供Docker容器 要求 Java 7/8 JRE JCE无限力量管辖权策略文件 使用Oracle JDK进行当前配置,否则更改密码套件和/或tls协议版本或禁用ssl 屏幕截图 列出所有文件 新增文件 仓库视图 列出所有文件 安装 从二进制文件 您只需要提取最新版本的二进制zip。 从来源 检出git存储库,并

Jackrabbit入门教程

以下内容来自jackrabbit官方文档 官方跳转链接:Jackrabbit First Hops First HopsFirst HopsHop 0: 入门Hop 1: 登录到JackrabbitHop 2: 处理内容Hop 3: 导入内容 First Hops 欢迎来到您进入Jackrabbit世界的第一站! 本简介为您提供了使用Jackrabbit和JCR API的动手经验。 一旦完成了本文档的跳转,就应该准备继续使用官方的JCR规范和该站点上的文档。 Hop 0: 入门 开始使用Jackrabbit

ozhi的博客 5171

报错:subprocess.CalledProcessError: Command ‘[‘where‘, ‘cl‘]‘ returned non-zero exit status 1.

右键此电脑--属性--高级系统设置--环境变量--系统变量--找到Path。Enterprise是企业版,如果你是社区版就找Community。2.安装的时候,c++桌面那个需要勾选。

2301_77554343的博客 1507

Java中将inputstream输入流转换成byte[]字节数组

Java中将inputstream输入流转换成byte[]字节数组 Java中的I/O机制都是基于数据流进行输入和输出的,将流转换成字节数组保存下来是数据流传输必不可少的一部分。转换的代码如下(在具体场景下需要处理流的关闭问题): public static byte[] toBy...

IT之旅 的博客 6万+

Kali实战:构建安卓远程监控工具,实现拍照、定位与信息获取

本文详细介绍了如何使用Kali Linux构建安卓远程监控工具,实现拍照、定位与信息获取功能。通过Metasploit框架生成安卓载荷,部署到目标设备并建立连接,执行远程监控操作如获取位置信息、拍照和读取通讯录。文章还提供了进阶技巧与问题排查方法,强调法律与道德考量。

weixin_28716443的博客 239

如何在STM32上5分钟搞定nanopb协议传输?附完整代码示例

本文提供了在STM32微控制器上快速集成nanopb协议传输的实战指南。通过详细的步骤,从.proto文件定义、代码生成到STM32CubeIDE项目移植,帮助开发者利用nanopb这一轻量级Protocol Buffers C语言实现,在5分钟内构建高效、跨平台的嵌入式设备通信框架,并附有完整的代码示例。

jwt8token的博客 839

Jackrabbit文件方式的存储

配置如下: http://jackrabbit.apache.org/dtd/repository-1.4.dtd">                                                                      class="org.apache.jackrabbit.core.query.

知识积淀 2879

一文入门BMS(电池管理系统)

本文章是基于曾师兄的文稿《具有组网扩展功能的新能源汽车电池管理系统》而写的文章。该文章主要是对BMS(Battery Management System,电池管理系统)做一些简要的介绍,借此助各位也助我入门BMS。有纰漏请指出,转载请说明。学习交流请发邮件 1280253714@qq.com。

weixin_45817947的博客 2万+
上一篇: solr4.8 + tomcat8.5.9 + ansj_seg的整合
下一篇: Viewer.js的简单使用
ljunpupupu
博客等级 码龄9年 31粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值