java.lang.ClassCastException:org.primefaces.model.DefaultUploadedFile无法强制转换为java.io.File

时间:2012-09-28 10:06:34

标签: java jsf primefaces

我使用primefaces上传文件组件一切正常: 我需要检索上传文件的问题:

public void handleFileUpload(FileUploadEvent event)  {
   selectedFile=(File) event.getFile();    
  }  

上传的文件有DefaultUploadedFile类型类但我需要File类类型。我尝试强制转换,但是我得到了强制转换错误,所以我找到了另一个使用DefaultUploadedFile URI创建文件的解决方案

selectedFile=new File(Uri) 

但我找不到从event.getFile()

中检索它的方法

任何想法都将受到赞赏

2 个答案:

答案 0 :(得分:2)

我认为你不能将{is}强加给java.io.FilegetFile()方法返回的实例的类型为UploadedFile(与java.io.File完全无关)。但是,您可以使用getInputStream()方法检索InputStream并像这样读取文件:

UploadedFile file = event.getFile();
InputStream in = file.getInputStream();
// do something useful with the input stream...

UploadedFile接口提供了其他有用的方法来检查上传的文件。有关详细信息,请参阅:http://www.dzeek.net/javadoc/primefacesdocs/org/primefaces/model/UploadedFile.html

答案 1 :(得分:1)

在您的方法中,从InputStream获取UploadedFile。从InputStream开始,File是一种简单的方法。示例(How to convert InputStream to File in Java

public void handleFileUpload(FileUploadEvent event)  {        
    UploadedFile selectedFile = event.getFile();
    InputStream inputStream = selectedFile.getInputstream();    
    ...
}