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()
创建一个尚不存在的新文件夹层次结构。
我有一个文件上传控件,可以直接将文件保存到服务器而不是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()
创建一个尚不存在的新文件夹层次结构。