現在の状況: Java コードでは、Ektorp ライブラリを介して CouchDB から添付ファイル付きのドキュメントを取得しています。これらのドキュメントは Java オブジェクトにマップされ、すべて正常に機能します。ブラウザーでこれらの添付ファイルにアクセスできるようにするために、バイト配列としてのドキュメントの添付ファイル、コンテンツ タイプ、およびファイル名を使用して ByteArrayResource をインスタンス化しています。
private ByteArrayResource handleAttachment(String key, String cType) {
ByteArrayResource res = null;
AttachmentInputStream attIS = CouchDB.INSTANCE.getCouchDbConnector().getAttachment(doc.getId(), key);
InputStream is = new BufferedInputStream(attIS);
try {
// Convert InputStream to byte[] with Apache commons-io
byte[] bytes = IOUtils.toByteArray(is);
attIS.close();
is.close();
res = new ByteArrayResource(cType, bytes, key);
} catch (IOException e) {
logger.error("", e);
}
return res;
}
次に、自分のページに ResourceLink を追加するだけです。
ByteArrayResource resource = handleAttachment(key, cType);
add(new ResourceLink("resLink", resource));
問題は、ブラウザでそのリンクをクリックすると、コンテンツ タイプに関係なく、すべての添付ファイルがダウンロードされることです。ブラウザー経由で CouchDB からこれらの添付ファイルに直接アクセスすると、"image/xxx" コンテンツ タイプがブラウザーで画像を開き、"text/xxx" がブラウザーに表示され、"application/pdf" も処理されます。ブラウザーによって (Safari などで PDF がすぐに表示されます)。
Wicketでそれを達成するにはどうすればよいですか? どんな助けでも大歓迎です。私のサイトは保護されているため、共有リソースは必要ありません。ありがとうございました!
PS: 興味深いのは、「rel="prettyPhoto" 属性を持つ「画像」コンテンツ タイプの ResourceLinks の 1 つを開くと、JQuery PrettyPhoto プラグインを取得して、その画像をレイオーバーで正しく表示することです。ただし、ブラウザーは a をトリガーします。ダウンロード。