업로드 된 파일을 XPAGES 업로드 컨트롤을 사용하여 로컬 파일 시스템에 저장하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/9482085

  •  13-11-2019
  •  | 
  •  

문제

XPAGES 업로드 컨트롤을 사용하여 업로드 된 파일을 로컬 디스크에 저장하는 방법은 무엇입니까?텍스트 필드와 내 XPAGES에 FileUpload 컨트롤이있는 간단한 양식 만 있습니다. (문서에 바인딩이 없으므로 XPages 구성 요소에 액세스하여 제출할 수있는 값을 얻으려면 Java 코드에서 업로드 된 파일에 액세스 할 수 있습니까?이 업로드 컨트롤을 Java 코드에서 얻을 수 있도록 'xspfileupload'객체가 있습니다.그러나 나는 파일 시스템에 그것을 저장할 수있는 원시 파일 객체에 액세스하는 방법을 볼 수 없습니다 ... 누군가가 이것을 도와 줄 수 있습니까?

도움이 되었습니까?

해결책

업로드 컨트롤에서 파일을 검색하려면이 코드 (자바를 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 
   }
}
.

다른 팁

이것은 jjtbsomHorst의 답변을 사용하여 작성된 SSJS 코드이고 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에 "메시지"라는 레이블이 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top