2012-09-07 53 views

回答

2

你最好看看这篇文章。使用战斧2.0(http://myfaces.apache.org/tomahawk-project/tomahawk20/index.html)由BalusC的解决方案是伟大的,你需要

JSF 2.0 File upload

一切都在那里

+0

这是我的代码工作簿簿= Workbook.getWorkbook(新文件( “d:/Docs/MNC/document.xls”)); \t \t Sheet sheet = workbook.getSheet(“Sheet”);生病添加excl文件如图所示,但我想要得到它,我点击浏览n选择导入buton..pls帮助我如何获得此路径,当用户点击浏览并导入 – user1654095

+0

你的意思是当你点击浏览器时浏览按钮被采取直接到那个文件? – MaVRoSCy

+0

雅代替name..i要从ui..how我可以选择的文件路径,用户的路径名y中的文件的硬编码路径? – user1654095

6

我需要知道如何使用浏览已上传的获取文件的路径为了读取excel文件的内容。

这里有一个主要的思考错误。

想象一下,我是希望上传文件的客户端,并且您是需要获取文件内容的服务器。我给你的路径c:\path\to\foo.xls作为唯一的信息。你将如何为服务器不断得到它的内容是什么?你有一个开放的TCP/IP连接到我的本地硬盘文件系统?真?是否所有其他人的本地磁盘文件系统都能够通过Internet轻松访问所有敏感信息?

这不是上传文件的方式。这如果服务器在物理上是同机作为客户端运行只有永远的工作,这样就可以只使用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并在4.0 showcase site RF 4.0一个完整的例子。

无论您选择什么方式,您应该在JSF受管bean中最终以代表文件内容的byte[]InputStream结束。那么你所有的存储它,无论你使用例如FileOutputStream希望服务器的本地磁盘文件系统上的自由。你甚至可以也只需直接将其以任何Excel的API你使用,大部分都只是采取的方法的InputStreambyte[]

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) { 

    } 

} 
相关问题