jaspersoft和mongoDb gridFs图像

时间:2015-11-12 14:47:02

标签: mongodb jasper-reports gridfs

我目前正在jaspersoft中使用mongoDb在后台开发报告。我将图像上传到mongoDb gridFS,需要在数据库中的报告上显示这些图像。

我过去用SQL做过这个,但是无法从mongoDb获取图像。

有没有人有过在jaspersoft报告中使用gridFS显示图像的经验?

JRXML以下:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.1.0.final using JasperReports Library version 6.1.0  -->
<!-- 2015-11-12T09:57:02 -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="imageTest" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="a2bd4e02-ac58-4869-8bca-92fe8eff6d77">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="mongoLocal"/>
    <subDataset name="fileQuery" uuid="c420c8eb-8dad-4163-a067-fb1e783c7bfa">
        <property name="com.jaspersoft.studio.data.defaultdataadapter" value="mongoLocal"/>
        <queryString language="MongoDbQuery">
            <![CDATA[{
    collectionName: 'studentImages.files',
    findQuery: { '_id' : { $oid : "55d74f02149c82ac5b615791" } }
}]]>
        </queryString>
        <field name="_id" class="org.bson.types.ObjectId"/>
        <field name="chunkSize" class="java.lang.Long"/>
        <field name="contentType" class="java.lang.String"/>
        <field name="filename" class="com.mongodb.gridfs.GridFSDBFile"/>
        <field name="length" class="java.lang.Long"/>
        <field name="md5" class="java.lang.String"/>
        <field name="uploadDate" class="java.util.Date"/>
    </subDataset>
    <queryString language="MongoDbQuery">
        <![CDATA[{
    collectionName: 'fs.chunks',
    findQuery: { 'files_id' : { $oid : "5644a7d1eeb5ea4e43774267" } }
}]]>

1 个答案:

答案 0 :(得分:0)

我不知道如何在MongoDbQuery中查询,但如果你设法填充文件名(非空),你可以使用GridFSDBFile API中的getInputStream()来显示jasper中的图像报告。

<image scaleImage="FillFrame" onErrorType="Blank">
   <reportElement x="0" y="0" width="100" height="100"/>
   <imageExpression class="java.io.InputStream"><![CDATA[$P{filename}.getInputStream()]]></imageExpression>
</image>