XPages 在单击按钮时创建一个新文件夹

XPages create a new Folder on button click

我有一个文件上传控件,可以直接将文件保存到服务器而不是Notes 文档,但是,必须事先创建保存文件的文件夹。有没有办法创建一个新文件夹并将文件保存到该文件夹​​而不是已经存在的文件夹。

参见下面的代码:

XPages

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">

    <xp:this.resources>
        <xp:script src="/scriptsTest.jss" clientSide="false"></xp:script>
    </xp:this.resources>
    <xp:fileUpload id="fileUpload1"></xp:fileUpload>
    <xp:button value="Label" id="button1">
        <xp:eventHandler event="onclick" submit="true"
            refreshMode="complete">
            <xp:this.action><![CDATA[#{javascript:saveTest();}]]></xp:this.action>
        </xp:eventHandler>
    </xp:button>
    <xp:text escape="true" id="message"></xp:text></xp:view>

Javascript

function saveTest()
{
    var con = facesContext.getExternalContext(); 
    var request:com.sun.faces.context.MyHttpServletRequestWrapper = con.getRequest(); 
    var map:java.util.Map = request.getParameterMap(); 
    
    var fileDataName = getClientId("fileUpload1");
    var fileData:com.ibm.xsp.http.UploadedFile = map.get( fileDataName ); 
    
    if (fileData == null) {
        getComponent("message").value = "File could not be found on " + fileDataName;
        return;
    }

    var fileName = fileData.getServerFileName();
    var serverFile:java.io.File = fileData.getServerFile();
    if (serverFile != null && serverFile.exists()) {
         var dir = "/home/notesdata/Shared/XBRL"; //Want to create a folder programmatically called Test in XBRL folder so path should be /home/notesdata/Shared?XBRL/Test

        var tempFile:java.io.File = new java.io.File(fileName);
        var correctedFileName = dir + java.io.File.separator + fileData.getClientFileName();
         var correctedFile:java.io.File = new java.io.File( correctedFileName ); 
        var success = tempFile.renameTo(correctedFile);
        getComponent("message").value = "Yay!" + correctedFileName;
        //correctedFile.renameTo(tempFile);
    }
    else {
        getComponent("message").value = "There's a problem to find the temporal file.";
    }
}

使用mkdir() 在已存在的路径中创建一个新文件夹。因此,如果该路径已存在,以下内容将在 /home/notesdata/Shared/XBRL 中创建一个名为 Test 的新文件夹:

var newPath = "/home/notesdata/Shared/XBRL/Test";
var newFolder:java.io.File = new java.io.File(newPath);
newFolder.mkdir();

注意:使用 mkdirs() 创建一个尚不存在的新文件夹层次结构。