Oracle adf ADF:使用InputFile组件时如何获取文件路径
我使用的是jdeveloper版本11.1.1.5.0。在我的用例中,我创建了邮件客户端发送邮件程序,在该程序中,我使用ADF InputFile组件将文件附加到邮件上 但问题是InputFile组件只返回文件的路径(仅获取文件名)。在我的邮件程序数据源类中,使用完整路径访问文件名Oracle adf ADF:使用InputFile组件时如何获取文件路径,oracle-adf,Oracle Adf,我使用的是jdeveloper版本11.1.1.5.0。在我的用例中,我创建了邮件客户端发送邮件程序,在该程序中,我使用ADF InputFile组件将文件附加到邮件上 但问题是InputFile组件只返回文件的路径(仅获取文件名)。在我的邮件程序数据源类中,使用完整路径访问文件名 UploadedFile uploadfile=(UploadedFile) actionEvent.getNewValue(); String fname= uploadfile.getFilename();/
UploadedFile uploadfile=(UploadedFile) actionEvent.getNewValue();
String fname= uploadfile.getFilename();//this line only get file name.
因此,如何使用adf InputFile组件或任何其他方式获得完整路径以满足我的要求。如果web应用程序能够看到上传文件的数据流以外的任何内容,这将是一个安全问题。客户端的目录结构不会向webapp公开。因此,除非您计划从与服务器相同的主机上载文件,否则您将无法访问客户端上的文件路径
注意:由于信誉阈值,使用应答而不是注释,您可以将上载的文件保存在服务器的路径中。只需注意命名该文件,因为用户的并发性,您应该遵循有关该文件的策略,例如,在文件名中添加以毫秒为单位的te时间。像这样
private String writeToFile(UploadedFile file) {
ServletContext servletCtx =
(ServletContext)FacesContext.getCurrentInstance().getExternalContext().getContext();
String fileDirPath = servletCtx.getRealPath("/files/tmp");
String fileName = getTimeInMilis()+file.getFilename();
try {
InputStream is = file.getInputStream();
OutputStream os =
new FileOutputStream(fileDirPath + "/"+fileName);
int readData;
while ((readData = is.read()) != -1) {
os.write(readData);
}
is.close();
os.close();
} catch (IOException ex) {
ex.printStackTrace();
}
return fileName;
}
此方法还返回上载文件的新名称。您可以使用任何喜欢的命名策略替换getTimeInMilis()。为什么要这样做@Manish,您可以使用uploadFile.getInputStream()轻松获取文件内容,如果需要,您可以将其包装到您选择的文件对象中!