使用 Agent 和 LotusScript 从 POST 获取附件

Get Attachment from POST using Agent and LotusScript

我有一个网络表格(见下面的虚拟示例),它是由代理打印的。

表单提交后由代理 (LS) 处理。

我不知道如何检索 files/attachments,这是我的问题。

<form name="profile" method="POST" action=".../postAgentName?openagent">
<input name="title"/>
<input name="price"/>
...
<input type="file" name="files" multiple>
</form>

据我所知,附件不是 DocumentContext 的一部分,而只是文件名。我有点怀疑文件可能会在某处请求中临时上传到 Domino,但我真的不确定?

是否可以使用 LS 编写的代理中的“文件”控制器使用 LotusScript 获取附件? 有人能指出我正确的方向吗?或者给个小费我该怎么做?

非常感谢。

我已经构建了自己的解决方案

  1. 当我们在客户端 select 文件时 - 我们使用 javascript
  2. 将它们转换为 base64
<form name="formName" method="post" action="agentName?openagent">
<input name="title" value="xxx">
<input type="file" name="files" multiple onchange="toBase64()">
</form>
  1. 我们像往常一样添加 base64 字符串,以便将它们提交给端点(代理)

var reader = new FileReader();

  1. agent 将获取 base64 值并将其转换回文件(使用 LS 或 Java/LS2J)

Call stream.WriteText(base64File)

Call item.SetContentFromText(stream, contentType, ENC_BASE64)

在此处查看详细信息(无法在此处正确格式化): https://dpastov.blogspot.com/2021/01/how-to-post-attachments-using-form-to.html

要接受文件作为表单提交的一部分,您必须设置表单 'enctype' 属性来处理文件:

<form method="post" enctype="multipart/form-data" action="/x.nsf/x?CreateDocument" name="_fmForm">

在 Domino 中使用 'file upload control' (FUC) 附加的文件将附加到文档,并且作为网络查询保存事件的一部分可以通过附件类型的嵌入式对象访问。

(注意:通过将文件上传到 Domino 来生成您自己的表单很棘手)。