adf中用inputFile上传文件到weblogic 方法1
2014-05-20 18:21
357 查看
上传文件有两种,一是直接上传文件到到服务器的某个路径下 二是直接上传文件内容到数据库
这里首先是上传到路径下实例
由于weblogic中获得路径只能用getServletContext().getResource("/").getPath(),有没有其它方法我不知道。我只知道不能用getRealPath()
问题描述:在tomcat服务器和webspare服务器,以这样的方式都能够得到完整的服务器路径,
但迁移到weblogic之后,就得不到了,返回的就是null!
原因:weblogic是以war包的形式发布的,并没有realPath,故不能用 getServletContext().getRealPath("/")获得绝对路径!
解决办法:修改代码获得相对路径:
把代码getServletContext().getRealPath("/") 修改成 getServletContext().getResource("/")既可以解决此问题!
实例如下
<af:form id="f1" usesUpload="true">
<af:inputFile label="文件名:" id="if1"
valueChangeListener="#{MyBackingBean.valueListener}"
binding="#{MyBackingBean.fileUI}" autoSubmit="true"
value="#{MyBackingBeanBean}"/>
<af:commandButton text="upload" id="cb1"
actionListener="#{MyBackingBean.commonListener}"/>
</af:form>
注意 autoSubmit="true"没有设置,属性监听器就没作用
private RichInputFile fileUI;
private String fileLocation = "/upload";
private UploadedFile uploadedFile;
public void valueListener(ValueChangeEvent valueChangeEvent) {
// Add event code here...
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpServletRequest request =(HttpServletRequest)externalContext.getRequest();
String root = "";
try {
root =request.getSession().getServletContext().getResource("/").getPath();
} catch (MalformedURLException e) {
}
if (!new File(root + fileLocation).exists()) {
new File(root + fileLocation).mkdirs();
}
UploadedFile file = (UploadedFile)valueChangeEvent.getNewValue();
if (file != null && file.getLength() > 0) {
try {
InputStream in = file.getInputStream();
FileOutputStream out =
new FileOutputStream(root + fileLocation + "/" +
file.getFilename());
writeInputStreamToOutputStream(in, out);
in.close();
out.close();
String message =
"Successfully uploaded file '" + file.getFilename() +
"' (" + file.getLength() + " bytes)";
System.out.println(message);
} catch (FileNotFoundException fnfe) {
// TODO: Add catch code
fnfe.printStackTrace();
} catch (IOException ioe) {
// TODO: Add catch code
ioe.printStackTrace();
}
}
}
这里首先是上传到路径下实例
由于weblogic中获得路径只能用getServletContext().getResource("/").getPath(),有没有其它方法我不知道。我只知道不能用getRealPath()
问题描述:在tomcat服务器和webspare服务器,以这样的方式都能够得到完整的服务器路径,
但迁移到weblogic之后,就得不到了,返回的就是null!
原因:weblogic是以war包的形式发布的,并没有realPath,故不能用 getServletContext().getRealPath("/")获得绝对路径!
解决办法:修改代码获得相对路径:
把代码getServletContext().getRealPath("/") 修改成 getServletContext().getResource("/")既可以解决此问题!
实例如下
<af:form id="f1" usesUpload="true">
<af:inputFile label="文件名:" id="if1"
valueChangeListener="#{MyBackingBean.valueListener}"
binding="#{MyBackingBean.fileUI}" autoSubmit="true"
value="#{MyBackingBeanBean}"/>
<af:commandButton text="upload" id="cb1"
actionListener="#{MyBackingBean.commonListener}"/>
</af:form>
注意 autoSubmit="true"没有设置,属性监听器就没作用
private RichInputFile fileUI;
private String fileLocation = "/upload";
private UploadedFile uploadedFile;
public void valueListener(ValueChangeEvent valueChangeEvent) {
// Add event code here...
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpServletRequest request =(HttpServletRequest)externalContext.getRequest();
String root = "";
try {
root =request.getSession().getServletContext().getResource("/").getPath();
} catch (MalformedURLException e) {
}
if (!new File(root + fileLocation).exists()) {
new File(root + fileLocation).mkdirs();
}
UploadedFile file = (UploadedFile)valueChangeEvent.getNewValue();
if (file != null && file.getLength() > 0) {
try {
InputStream in = file.getInputStream();
FileOutputStream out =
new FileOutputStream(root + fileLocation + "/" +
file.getFilename());
writeInputStreamToOutputStream(in, out);
in.close();
out.close();
String message =
"Successfully uploaded file '" + file.getFilename() +
"' (" + file.getLength() + " bytes)";
System.out.println(message);
} catch (FileNotFoundException fnfe) {
// TODO: Add catch code
fnfe.printStackTrace();
} catch (IOException ioe) {
// TODO: Add catch code
ioe.printStackTrace();
}
}
}
相关文章推荐
- Android webview Input type=file 文件上传 解决方法
- Angular2里获取(input file)上传文件的内容的方法
- 动态input file多文件上传到后台没反应的解决方法!!!
- IE input file隐藏不能上传文件解决方法
- ASP.NET同时上传多个文件,和不使用HTMLFileInput上传的方法(resource about file upload)
- 上传文件input tyle="file"文件的浏览按钮和文本框用图片替换的方法1
- IE input file隐藏不能上传文件解决方法
- IE input file隐藏不能上传文件解决方法
- 在C#.net中做页面上传的程序。用Dhtml的控件:(创建文件上载控件,该控件带有一个文本框和一个浏览按钮。)和类HtmlInputFile的两种方法
- 修改input[type="file"]文件上传样式的2种方法
- IE input file隐藏不能上传文件解决方法
- Bootstrap的fileinput插件实现多文件上传的方法
- IE input file隐藏不能上传文件解决方法
- Bootstrap的fileinput插件实现多文件上传的方法
- 关于Html动态添加上传文件控件inputFile(附件)及清除已选择的文件的几个方法
- ajax利用html5新特性带进度条上传文件 html5的FormData对象和input的file属性以及window.URL.createObjectURL( ) 方法
- fileinput组件将文件上传到服务器的路径编写方法以及Tomcat的配置
- php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
- php 应用 bootstrap-fileinput 上传文件 插件 操作的方法
- IE input file隐藏不能上传文件解决方法(转载)