Как сохранить загруженный файл на локальный диск с помощью управления загрузкой xPages? У меня есть простая форма с текстовым полем и элементом управления fileUpload на моих xPages (нет привязки к документу, поэтому я обращаюсь к компонентам xpages, чтобы получить их значения при отправке). Как я могу получить доступ к такому загруженному файлу из моего java-кода? Я могу получить этот элемент управления загрузкой из своего java-кода, поэтому у меня есть объект XspFileUpload. Но я не вижу способа получить доступ к необработанному объекту File, чтобы сохранить его в файловой системе ... Может ли кто-нибудь помочь мне с этим?
Как сохранить загруженный файл в локальную файловую систему с помощью управления загрузкой xPages?
Ответы (2)
Чтобы получить файл из элемента управления загрузкой, вы можете использовать этот фрагмент кода (это java, поэтому вам нужно преобразовать его в ssjs..)
// 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
}
}
person
jjtbsomhorst
schedule
28.02.2012
Что такое ‹fileuploadid›? Я попробовал идентификатор элемента управления fileUpload (как у меня на xpage), но он не работает, он говорит, что не существует.
- person David Marko; 28.02.2012
Нашел. Замените fileuploadid на «XspFileUpload control».getClientId(FacesContext.getCurrentInstance())
- person David Marko; 28.02.2012
Это код 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 есть метка с именем «сообщение».
person
Mario S
schedule
22.08.2014
Можно ли получить mimetype serverFile с помощью ssjs?
- person Muhammed Ismail Carrim; 29.03.2021