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

时间:2014-05-27 17:31:59

标签: xpages xpages-ssjs

我有一个文档,用户将文件附加到名为licenseKey的上传控件。在SSJS中,我需要检索该文件的内容并进行处理。我知道它是一个ASCII文本文件,我知道一般格式。我想为附件的内容创建var inStream:NotesStream,但我无法在SSJS中看到如何执行此操作。 我尝试过使用getComponent(" licenseKey"),但不知道接下来会发生什么。 此代码实际上由附加文件的用户运行,因此如果我可以从upLoad控件获取它们,则本地文件路径和文件名将有效。

感谢。

2 个答案:

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