XPages中按钮点击创建新文件夹并保存上传文件的实现方法
如何在XPages中编程创建文件夹并保存上传文件到新文件夹
当然可以实现!你只需要借助Java的java.io.File类就能轻松创建文件夹,然后把上传的文件移动到这个新创建的目录里。下面是修改后的完整代码和关键说明:
修改后的Javascript函数(scriptsTest.jss)
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 baseDir = "/home/notesdata/Shared/XBRL"; // 定义要创建的新文件夹路径 var newFolderName = "Test"; var targetDir:java.io.File = new java.io.File(baseDir, newFolderName); // 创建文件夹(mkdirs会自动创建所有不存在的父目录) if (!targetDir.exists()) { var folderCreated = targetDir.mkdirs(); if (!folderCreated) { getComponent("message").value = "Failed to create folder: " + targetDir.getAbsolutePath(); return; } } // 构建新的文件保存路径(指向新文件夹) var correctedFileName = targetDir.getAbsolutePath() + java.io.File.separator + fileData.getClientFileName(); var correctedFile:java.io.File = new java.io.File(correctedFileName); var tempFile:java.io.File = new java.io.File(fileName); // 移动临时文件到目标路径 var success = tempFile.renameTo(correctedFile); if (success) { getComponent("message").value = "File saved successfully to: " + correctedFileName; } else { getComponent("message").value = "Failed to move file to target folder."; } } else { getComponent("message").value = "There's a problem finding the temporary file."; } }
关键说明
- 文件夹创建逻辑:使用
targetDir.mkdirs()而不是mkdir(),前者会自动创建所有不存在的父级文件夹(如果有的话),后者仅创建最后一级文件夹,父级不存在则失败。 - 权限检查:确保Notes服务器进程拥有对
/home/notesdata/Shared/XBRL目录的读写权限,否则创建文件夹或移动文件会失败。 - 错误处理:新增了文件夹创建失败的判断,避免后续操作在目录不存在的情况下执行,同时给用户明确的错误提示。
- 路径拼接:使用
File类的构造方法new java.io.File(baseDir, newFolderName)或者getAbsolutePath()来拼接路径,比手动拼接更安全,能适配不同操作系统的路径分隔符。
你的XPages页面代码不需要修改,保持原样即可。
内容的提问来源于stack exchange,提问作者Muhammed Ismail Carrim
相关产品推荐
相关产品推荐

