我目前正在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" } }
}]]>
答案 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>