2012-09-07 4 views
0

UI에서 내용을 읽고 표시하기 위해 Excel 문서를 가져 오려고합니다. 엑셀 파일의 내용을 읽으려면 찾아보기를 사용하여 업로드 한 파일의 경로를 얻는 방법을 알아야합니다.JSF에서 업로드 된 파일 경로를 얻는 방법

+0

질문 명확하지 자세한 내용 –

답변

2

이 기사를 살펴 보는 것이 좋습니다. BalusC에 의해 (http://myfaces.apache.org/tomahawk-project/tomahawk20/index.html) 토마 호크 2.0 사용하는 솔루션은 당신이 필요로하는

JSF 2.0 File upload

모두가 대단한

난에서 찾아보기를 사용하여 업로드 한 파일의 경로를 얻는 방법을 알 필요가
+0

을 제공하십시오이 내 코드 워크 북 워크 북 = Workbook.getWorkbook (새 파일 ("D : /Docs/MNC/document.xls은"))이다; \t \t 시트 시트 = workbook.getSheet ("Sheet"); 아픈 excl 파일을 추가로 표시하지만 내가 그것을 원한다면 내가 찾아보기를 클릭하십시오 n을 선택하십시오. 가져 오기 buton..pls이 경로를 얻는 방법을 사용자가 찾아보기를 클릭 할 때 가져 오기 – user1654095

+0

당신은 브라우저 찾아보기 단추를 누르십시오 의미합니다 그 파일에 직접? – MaVRoSCy

+0

나중에 대신 파일 이름의 하드 코드 된 경로 .. 내가 Ui ..에서 경로 이름을 원하는 어떻게 내가 선택한 파일 경로를 사용자가 얻을 수 있습니까? – user1654095

6

엑셀 파일의 내용을 읽는 순서.

여기에는 큰 실수가 있습니다.

나는 파일을 업로드하려는 클라이언트이고 파일의 내용을 가져와야하는 서버라고 상상해보십시오. 나는 당신에게 유일한 정보로 c:\path\to\foo.xls 경로를 제공합니다. 어떻게 당신은 서버가되고 계십니까 내용을 얻으시겠습니까? 로컬 하드 디스크 파일 시스템에 대한 TCP/IP 연결이 열려 있습니까? 정말? 다른 모든 사람들의 로컬 디스크 파일 시스템이 민감한 정보를 인터넷에 쉽게 접근 할 수 있습니까?

업로드하는 방식이 아닙니다. 서버가 클라이언트와 물리적으로 동일한 시스템에서 실행되는 경우에만이 작업이 수행되므로 로컬 개발 환경에서만 발생하는 해당 경로와 함께 FileInputStream을 사용할 수 있습니다.

클라이언트가 HTTP 요청 본문과 함께 귀하에게 보낸 내용 유일한 파일에 관심을 가져야합니다. HTML 용어로는 <input type="file">을 사용할 수 있습니다. 그러나 곧 출시 될 JSF 2.2에 해당하는 표준 JSF <h:xxx> 구성 요소가 없습니다. 이를위한 컴포넌트를 제공하는 JSF 컴포넌트 라이브러리를 찾아야한다. 귀하의 경우 RichFaces (귀하의 질문에 태그)와 함께 <rich:fileUpload>을 사용할 수 있습니다. RichFaces 버전을 사용하고 있는지는 명확하지 않지만 RF 3.3.3의 경우 3.3.3 showcase site과 RF 4.0의 경우 4.0 showcase site에서 전체 예제를 찾을 수 있습니다.

어떤 방식을 선택하든 JSF 관리 빈에서 궁극적으로 파일 내용을 나타내는 byte[] 또는 InputStream이됩니다. 그런 다음 서버의 로컬 디스크 파일 시스템에 원하는 모든 위치에 자유롭게 저장할 수 있습니다 (예 : FileOutputStream). 심지어 사용중인 Excel API에 직접 피드 할 수도 있습니다. 대부분의 메서드는 InputStream 또는 byte[]입니다.

0
String fileName = FilenameUtils.getName(uploadedFile.getName()); 
byte[] bytes = uploadedFile.getBytes(); 
FileOutputStream outputStream = null; 
try { 
    String filePath = System.getProperty("java.io.tmpdir") + "" + fileName; 
    outputStream = new FileOutputStream(new File(filePath)); 
    outputStream.write(bytes); 
    outputStream.close(); 
    readExcelFile(filePath); 
} catch (Exception ex) { 

} 
In the above code Iam uploading the file using tomahawk after uploading storing the  file in a temporary location.And from there i will be reading using poi.                       
public static void readExcelFile(String fileName) 
{ 
    try{ 
     FileInputStream myInput = new FileInputStream(fileName); 
     POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput); 
     org.apache.poi.ss.usermodel.Workbook workbook = WorkbookFactory.create(myFileSystem); 
     org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0); 
     Iterator rowIter = sheet.rowIterator(); 
      for(Row row : sheet) { 
      //u can read the file contents by iterating. 
      } 
    } catch (Exception ex) { 

    } 

} 
관련 문제