如何从xpages中的上载控件获取文件名和路径

如何从xpages中的上载控件获取文件名和路径,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我有一个文档,用户将一个文件附加到名为licenseKey的上载控件。在SSJS中,我需要检索该文件的内容并对其进行处理。我知道这是一个ASCII文本文件,我知道它的一般格式。我想为附件的内容创建var-inStream:NotesStream,但我不知道如何在SSJS中做到这一点。 我尝试过使用getComponent(“licenseKey”),但看不出下一步会是什么。 这段代码实际上是由附加文件的用户运行的,因此如果我可以从upLoad控件获取本地文件路径和文件名,那么它们将是有效的 谢谢

我有一个文档,用户将一个文件附加到名为licenseKey的上载控件。在SSJS中,我需要检索该文件的内容并对其进行处理。我知道这是一个ASCII文本文件,我知道它的一般格式。我想为附件的内容创建var-inStream:NotesStream,但我不知道如何在SSJS中做到这一点。 我尝试过使用getComponent(“licenseKey”),但看不出下一步会是什么。 这段代码实际上是由附加文件的用户运行的,因此如果我可以从upLoad控件获取本地文件路径和文件名,那么它们将是有效的


谢谢

朱利安·巴斯做了一个很好的解释 . 引述:

如何处理上传的文件

将这样的代码放在XPage to的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服务器上的“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是您选择的notesdocument上的富文本项 rtFiles.EmbeddedObject(lotus.domino.local.EmbeddedObject.embedded_附件, “”,更正了文件。getAbsolutePath(),null); 已更正的文件。重命名为(临时文件)

此代码段将临时文件重命名为原始文件名, 将其附加到RichText项,并将其重新命名为神秘名称 (以便在处理后由Domino删除)


在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();
...

beforerenderresponse:try{dBar.info(“in try”)var con=facesContext.getExternalContext();var request:com.sun.faces.context.MyHttpServletRequestWrapper=con.getRequest();var map:java.util.map=request.getParameterMap();var fileDataName=“file”;//包含文件var fileData的POST请求参数的名称:com.ibm.xsp.http.UploadedFile=map.get(fileDataName);dBar.info(fileData,“get fileData”);var tempFile:java.io.file=fileData.getServerFile();dBar.info(tempFile,“get tempFile”)viewScope.put(“vsLicenseFile”,tempFile);}catch(e){dBar.info(“Nothing或error”);}但它永远无法通过消息gotfiledata。这是我期望的,直到我在上传中输入值。我错过什么了吗?我想我走错了方向。实际上,我只需要upload控件来获取文件名和路径,我真的不需要将文件附加到文档中。可能的副本