如何使用xPages上傳控件將上傳的文件存儲到本地磁盤?我只是一個簡單的表單,在我的xPages上有文本字段和fileUpload控件(沒有對文檔的綁定,所以我正在訪問xpages組件以便提交它們的值)我如何從我的java代碼訪問這樣上傳的文件?我可以從我的java代碼中獲得這個上傳控件,所以我有'XspFileUpload'對象。但我不能看到任何方式如何訪問原始文件對象,以便能夠將其保存在文件系統上......有人可以幫助我嗎?如何使用xPages上傳控件將上傳的文件存儲到本地文件系統?
2
A
回答
2
爲了取回上傳控件的文件,您可以使用這段代碼(所以你需要將其轉換爲SSJS其Java ..)
// get file from httpservletrequest
HttpServletRequest hsr = (HttpServletRequest) FacesContext .getCurrentInstance().getExternalContext().getRequest();
fileUploadID = 'XspFileUpload control'.getClientId(FacesContext.getCurrentInstance());
Map<?, ?> map = hsr.getParameterMap();
UploadedFile f = ((UploadedFile) map.get(fileUploadID));
if (f == null) {
throw new java.lang.Exception("File could not be found");
}
String fileName = f.getServerFileName()
if (super.isValid() && !this.isHidden()) {
File serverFile = f.getServerFile();
if (serverFile != null && serverFile.exists()) {
String dir = serverFile.getParent();
File tempFile = new File(dir + File.separator + fileName); // create a handle to the file on server
}
}
0
這是通過使用從答案SSJS寫的代碼jjtbsomhorst和http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_a_file_upload_and_download_controls的代碼
var con = facesContext.getExternalContext();
var request:com.sun.faces.context.MyHttpServletRequestWrapper = con.getRequest();
var map:java.util.Map = request.getParameterMap();
var fileDataName = "view:_id1:file";
var fileData:com.ibm.xsp.http.UploadedFile = map.get(fileDataName);
if (fileData == null) {
getComponent("message").value = "File could not be found on " + fileDataName;
}
var fileName = fileData.getServerFileName();
var serverFile:java.io.File = fileData.getServerFile();
if (serverFile != null && serverFile.exists()) {
var dir = serverFile.getParent();
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.";
}
PS。在XPage中有一個名爲「message」的標籤。
相關問題
- 1. 如何將上傳的文件存儲在文件系統中?
- 2. 如何從本地文件系統上傳文件?
- 3. 如何使用傳統ASP將文件上傳到Azure Blob存儲?
- 4. PHP文件上傳系統
- 5. 文件上傳系統
- 6. 如何在7.0上將附件存儲到本地文件系統?
- 7. 基本的PHP文件上傳系統
- 8. 將文件上傳到Azure Blob存儲
- 9. 從本地存儲上傳所有文件到Azure Blob存儲
- 10. 使用Python腳本將文件夾從本地系統上傳到FTP
- 11. 將文件上傳控制文件名傳遞到文件流
- 12. 如何使用非ASCII文件名存儲上傳的文件?
- 13. 如何在XPages中製作更好的文件上傳控件
- 14. 如何使用java將文件上傳到谷歌雲存儲?
- 15. 如何使用AngularFire將文件上傳到Firebase存儲?
- 16. 使用文件上傳控件上傳和刪除文件asp.net
- 17. 如何將上傳的文件保存在本地主機上?
- 18. 圖片上傳到文件系統
- 19. 如何將excel和csv文件上傳到上傳文件夾
- 20. 從本地系統上傳pdf文件到aws-s3
- 21. 文件上傳控件的錯誤使用文件上傳控件,在這裏
- 22. 使用API REST通過文件系統上傳的文件
- 23. 使用操作系統將Golang文件上傳到s3打開
- 24. 從本地文件系統批量上傳大量文件到Azure
- 25. 將文件從本地存儲上傳到使用Chrome擴展的服務器
- 26. 如何將文件從本地文件系統複製到HDFS文件系統?
- 27. 複製上傳的圖像存儲在文件系統
- 28. 將本地文件夾中的文件上傳到firebase
- 29. 客戶端文件上傳使用cfs文件系統
- 30. 保存ajax控件的文件上傳
什麼是?我已經嘗試了fileUpload控件ID(就像我在xpage上),但它不起作用,它說它不存在。 –
2012-02-28 14:47:54
找到它。用'XspFileUpload control'替換fileuploadid.getClientId(FacesContext.getCurrentInstance()) – 2012-02-28 15:18:22
Ive更新了我的答案:) – jjtbsomhorst 2012-02-28 15:56:22