我有一个文档,用户将文件附加到名为licenseKey的上传控件。在SSJS中,我需要检索该文件的内容并进行处理。我知道它是一个ASCII文本文件,我知道一般格式。我想为附件的内容创建var inStream:NotesStream,但我无法在SSJS中看到如何执行此操作。 我尝试过使用getComponent(" licenseKey"),但不知道接下来会发生什么。 此代码实际上由附加文件的用户运行,因此如果我可以从upLoad控件获取它们,则本地文件路径和文件名将有效。
感谢。
答案 0 :(得分:2)
Julian Buss做了一个很好的解释 here。引用:
如何处理上传的文件
将这样的代码放在XPage的beforeRenderResponse事件中 获取刚刚上传的文件的句柄:
var con = facesContext.getExternalContext(); var request:com.sun.faces.context.MyHttpServletRequestWrapper = con.getRequest(); var map:java.util.Map = request.getParameterMap(); var fileDataName = "file"; //name of the POST request parameter that contains the file var fileData:com.ibm.xsp.http.UploadedFile = map.get( fileDataName ); var tempFile:java.io.File = fileData.getServerFile();
该文件位于Domino Server上的“xspupload”目录中并具有 一些加密文件名。您可以使用原始文件名 fileData.getClientFileName()。
例如,您可以使用代码将文件附加到某些Notes文档 像这样:
var correctedFile = new java.io.File( tempFile.getParentFile().getAbsolutePath() + java.io.File.separator +
fileData.getClientFileName()); var success = tempFile.renameTo(correctedFile); // rtFiles是你选择的音符文档上的一个富文本项 rtFiles.embedObject(lotus.domino.local.EmbeddedObject.EMBED_ATTACHMENT, “”,correctedFile.getAbsolutePath(),null); correctedFile.renameTo(TEMPFILE);
此代码段将临时文件重命名为原始文件名, 将它附加到RichText项并将其重命名为隐藏名称 (这样在处理后它将被Domino删除。)
答案 1 :(得分:0)
在beforerenderResponse中尝试这个:
var fileData:com.ibm.xsp.http.UploadedFile = facesContext.getExternalContext().getRequest().getParameterMap().get(getClientId('fileUpload1'));
if (fileData != null) {
var tempFile:java.io.File = fileData.getServerFile();
...