2015-11-12 1 views
1

Je développe actuellement des rapports dans jaspersoft en utilisant mongoDb en arrière-plan. J'ai des images téléchargées sur mongoDb gridFS et j'ai besoin d'afficher ces images sur les rapports hors des bases de données.jaspersoft et mongoDb gridFs image

J'ai réussi par le passé à le faire en mode SQL, mais je n'arrive pas à obtenir les images à partir de mongoDb.

Quelqu'un a-t-il une expérience d'affichage d'images à partir de gridFS sur des rapports jaspersoft?

JRXML CI-DESSOUS:

<?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

Pouvez-vous poster votre code si vous avez essayé? –

+0

J'ai ajouté ma tentative la plus récente à la question originale. –

+0

Le problème est-il dans la requête ou l'affichage du fichier dans le rapport jasper?, Quelle est votre valeur actuelle du nom de fichier? –

Répondre

0

Je ne sais pas comment interroger dans votre MongoDbQuery, mais si vous parvenez à remplir le nom du fichier (son non nul), vous pouvez probablement utiliser le getInputStream() dans le GridFSDBFile API pour afficher la image dans le rapport 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>