在 Domino 中创建 wget
Creating wget in Domino
我正在尝试实现一项功能,即在 Domino 系统上调用代理时 returns 一个 zip 文件。所以 domino 是 returns 一个 zip 文件的网络服务器。
第 3 方应用程序会使用类似于 wget
语句的东西来调用基于多米诺骨牌的系统 url,他们会得到一个 zip 文件。
有没有人已经实现了这种想法,我们可以分享想法或提出建议。
提前致谢。
这可以通过使用 java.util.zip 和 xpage
来实现
if (doc != null)
{
Vector<String> attachments = (Vector<String>) s.evaluate("@AttachmentNames", doc);
if (attachments != null)
{
if (attachments.size() > 0)
{
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
this.setHeaders(response, zipFileName);
ZipOutputStream zipOutStream = new ZipOutputStream(response.getOutputStream());
EmbeddedObject embeddedObj = null;
BufferedInputStream bufferInStream = null;
for (String attName : (Vector<String>) attachments)
{
embeddedObj = doc.getAttachment(attName);
if (embeddedObj != null)
{
if (embeddedObj.getType() == EmbeddedObject.EMBED_ATTACHMENT)
{
bufferInStream = new BufferedInputStream(embeddedObj.getInputStream());
int bufferLength = bufferInStream.available();
byte[] data = new byte[bufferLength];
bufferInStream.read(data, 0, bufferLength);
ZipEntry entry = new ZipEntry(embeddedObj.getName());
zipOutStream.putNextEntry(entry);
zipOutStream.write(data);
zipOutStream.closeEntry();
bufferInStream.close();
try
{
embeddedObj.recycle();
} catch (Exception ex2)
{
OpenLogItem.logError(ex2);
}
}
}
}
zipOutStream.flush();
zipOutStream.close();
}
result = true;
facesContext.responseComplete();
}
doc.recycle();
}
private void setHeaders(HttpServletResponse response,String zipFileName)
{
try{
response.setContentType("application/octet-stream");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "Public");
response.setHeader("Content-Description", "File Transfer");
response.setHeader("Content-Disposition", "attachment; filename=" + zipFileName);
response.setHeader("Content-Transfer-Encoding", "binary");
}
catch(Exception ex)
{
OpenLogItem.logError(ex);
}
}
只需将 zip 文件存储在服务器上 Notes 数据库中的文档中。 URL 的形式为:
www.yourHost.com/your Path/yourDatabase.nsf/viewUNID/docUNID/$File/yourFilename.zip
使用任何你想取回它的工具。
(当然,这假定服务器已正确设置为支持 HTTP。)
我正在尝试实现一项功能,即在 Domino 系统上调用代理时 returns 一个 zip 文件。所以 domino 是 returns 一个 zip 文件的网络服务器。
第 3 方应用程序会使用类似于 wget
语句的东西来调用基于多米诺骨牌的系统 url,他们会得到一个 zip 文件。
有没有人已经实现了这种想法,我们可以分享想法或提出建议。
提前致谢。
这可以通过使用 java.util.zip 和 xpage
来实现if (doc != null)
{
Vector<String> attachments = (Vector<String>) s.evaluate("@AttachmentNames", doc);
if (attachments != null)
{
if (attachments.size() > 0)
{
HttpServletResponse response = (HttpServletResponse) facesContext.getExternalContext().getResponse();
this.setHeaders(response, zipFileName);
ZipOutputStream zipOutStream = new ZipOutputStream(response.getOutputStream());
EmbeddedObject embeddedObj = null;
BufferedInputStream bufferInStream = null;
for (String attName : (Vector<String>) attachments)
{
embeddedObj = doc.getAttachment(attName);
if (embeddedObj != null)
{
if (embeddedObj.getType() == EmbeddedObject.EMBED_ATTACHMENT)
{
bufferInStream = new BufferedInputStream(embeddedObj.getInputStream());
int bufferLength = bufferInStream.available();
byte[] data = new byte[bufferLength];
bufferInStream.read(data, 0, bufferLength);
ZipEntry entry = new ZipEntry(embeddedObj.getName());
zipOutStream.putNextEntry(entry);
zipOutStream.write(data);
zipOutStream.closeEntry();
bufferInStream.close();
try
{
embeddedObj.recycle();
} catch (Exception ex2)
{
OpenLogItem.logError(ex2);
}
}
}
}
zipOutStream.flush();
zipOutStream.close();
}
result = true;
facesContext.responseComplete();
}
doc.recycle();
}
private void setHeaders(HttpServletResponse response,String zipFileName)
{
try{
response.setContentType("application/octet-stream");
response.setDateHeader("Expires", 0);
response.setHeader("Pragma", "Public");
response.setHeader("Content-Description", "File Transfer");
response.setHeader("Content-Disposition", "attachment; filename=" + zipFileName);
response.setHeader("Content-Transfer-Encoding", "binary");
}
catch(Exception ex)
{
OpenLogItem.logError(ex);
}
}
只需将 zip 文件存储在服务器上 Notes 数据库中的文档中。 URL 的形式为:
www.yourHost.com/your Path/yourDatabase.nsf/viewUNID/docUNID/$File/yourFilename.zip
使用任何你想取回它的工具。
(当然,这假定服务器已正确设置为支持 HTTP。)