gpt4 book ai didi

java - 使用 sessionAsSigner 打开 pdf 文件

转载 作者:行者123 更新时间:2023-11-30 07:18:36 25 4
gpt4 key购买 nike

我有一个用户无权访问的数据库。我仍然可以访问数据库并“读取”文档,例如

var db:NotesDatabase = sessionAsSigner.getDatabase("","somedir/some.nsf");

在此数据库中有一个我想打开或下载的 pdf 文件。我有文件名和 unid 。如果用户有权访问数据库,我可以使用

http(s)://[yourserver]/[application.nsf] /xsp/.ibmmodres/domino/OpenAttachment/ [application.nsf]/[UNID|/$File/[AttachmentName]?Open

如何使用 sessionAsSigner 来完成此操作而不在表单上放置 $PublicAccess=1 字段?

编辑:pdf 文件作为附件存储在 Richtextfield

第二次编辑

我正在尝试使用 Naveen 的 XSnippet 并进行了一些更改

我收到的错误消息是:找不到“OutStream”

我尝试过的代码是:

response.reset();
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", "inline; filename=" + zipFileName);

var embeddedObj:NotesEmbeddedObject = null;
var bufferInStream:java.io.BufferedInputStream = null;
var outStream:java.io.OutputStream = response.getOutputStream();

embeddedObj = downloadDocument.getAttachment(fileName);
if (embeddedObj != null) {
bufferInStream = new java.io.BufferedInputStream(embeddedObj.getInputStream());
var bufferLength = bufferInStream.available();
var data = new byte[bufferLength];
bufferInStream.read(data, 0, bufferLength); // Read the attachment data

下一行是问题

OutStream.write(data); // Write attachment into pdf

bufferInStream.close();
embeddedObj.recycle();
}


downloadDocument.recycle();

outStream.flush();
outStream.close();
facesContext.responseComplete();

最佳答案

创建一个 XAgent(= 不渲染的 XPage),它将数据库 + documentid + 文件名作为 URL 参数,并将文件作为响应 OutputStream 传送。

网址为

http(s)://[yourserver]/download.nsf/download.xsp?db=[application.nsf]&unid=[UNID]&attname=[AttachmentName]

用于数据库 download.nsf 中的 XAgent download.xsp。

XAgent 背后的代码作为 sessionAsSigner 运行,即使用户本身无权访问文件的数据库,也能够读取文件。

使用Eric's blog (+ Java code ) 作为起点。将“application/json”替换为“application/pdf”并流式传输 pdf 文件而不是 json 数据。

作为替代方案,您可以调整此 XSnippet code from Thomas Adrian 。使用 download()grabFile() 将 pdf 文件写入 OutputStream。

您可以将附件从文档直接流式传输到响应的 OutputStream,而不是将附件文件提取到路径并从那里读取它。这是一个XSnippet from Naveen Maurya就是一个很好的例子。

关于java - 使用 sessionAsSigner 打开 pdf 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37985633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com