这两天要做一个文件上传的功能,为了配合webwork,使用了它带的上传功能,因为对拦截器没有深入的研究,被这个功能折腾了2天才弄出来,想想实在觉得花费时间太多了,还是得抽空好好系统的学习一下它,不能每次都到用的时候再折腾,那是被它折腾。
为了这个功能,也在网上搜了很多,看到很多人也碰到了跟我同样的问题,但是都没有很详细的解决过程,自己也是在山穷水尽的时候忽然就配置对了,所以记下来,以悼念我那2天的时间。
环境
windowsxp,webwork2.2.6,IE6
目的
用webwork的fileUploadInterceptor实现文件上传功能
步骤
1、web页面upload.jsp的上传代码,很简单,主要为
<ww:form name="form1" action="upload.action" method="post" enctype="multipart/form-data">
<ww:file name="file" label="广告图片"/>
<ww:submit />
</ww:form>
2、java部分的action代码
public class DocUpload extends ActionSupport {
//upload file
private String fileContentType;
private String fileFileName;
private File file;
private User user;
public String uploadFile()
{
Map session=ActionContext.getContext().getSession();
if(session!=null)
user=(User)session.get("user");
upload();
System.out.println("caption="+fileFileName);
return SUCCESS;
}
//上传文件
private void upload()
{
if(file!=null)
{
FileOutputStream outputStream;
try {
ResourceBundle rb = ResourceBundle.getBundle("config");
String fileDir = rb.getString("saveDir")+user.getId()+File.separator;
String filePath=fileDir+fileFileName;
try{
//创建目录
File f=new File(fileDir);
f.mkdirs();
}catch(Exception e)
{
e.printStackTrace();
}
outputStream = new FileOutputStream(filePath);
FileInputStream fileIn = new FileInputStream(file);
byte[] buffer = new byte[1024];
int len;
while ((len = fileIn.read(buffer)) > 0)
{
outputStream.write(buffer, 0, len);
}
fileIn.close();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("uploadfile name="+fileFileName);
}
else
{
System.out.println("file is null!");
}
}
public String getFileContentType() {
return fileContentType;
}
public void setFileContentType(String contentType) {
this.fileContentType = contentType;
}
public File getFile() {
return file;
}
public void setFile(File file) {
this.file = file;
}
public String getFileFileName() {
return fileFileName;
}
public void setFileFileName(String fileName) {
this.fileFileName = fileName;
}
其中的三个变量,fileContentType是文件的类型,fileFileName是文件名,file是文件,这里,三个变量名的构成是有规则的,file可以任意命名,但是其他两个变量的命名规则是file+ContentType和file+FileName,或者如果命名这里不注意,则在变量的setter和getter那里就要注意了,一定要是getFileFileName和getFileContentType,当然,如果不需要文件的文件名和文件类型,这两个变量可以省去,也省下麻烦了。
另外,webwork上传文件只是暂时存放在一个文件夹等待action里处理,处理完毕就会删除临时文件,所以在action里一定要自行对文件进行处理,不能指望它自动保存,因此我在 upload()函数里保存了一次。
3、xwork.xml中的相关配置
<action name="upload" class="DocUpload" method="uploadFile">
<interceptor-ref name="fileUpload" />
<interceptor-ref name="defaultStack" />
<result name="success">/sys/uploadsuccess.jsp</result>
<result name="input">/sys/upload.jsp</result>
</action>
这里就是把我卡了2天的地方,主要是<interceptor-ref name="defaultStack" />这一项,本来我在xwork.xml最前面写了 <default-interceptor-ref name="completeStack"/>,以为这样应该都包含了,但是就是不行,到网上到处搜,人家说要设置<interceptor-ref name="fileUpload" />这个,写上了也不行,试了很多方法都不行,最后无意中把<interceptor-ref name="defaultStack" />这行添上就出来了。
4、webwork.properties的相关配置
webwork.multipart.parser=jakarta
#file upload temp save
webwork.multipart.saveDir=d:/temp
其中,webwork.multipart.parser是设置处理上传的类的,有cos jakarta pell 三种设置, jakarta是默认的设置;注意设置了相应的类要把相应的jar放进来;
webwork.multipart.saveDir是设置临时保存文件的文件夹;
5、config.properties用来设置上传图片的保存路径,不是webwork上传功能必须的配置
#windows
saveDir=D:/Tomcat 5.5/webapps/pxbn/upload/
#linux
#saveDir=/home/web/tomcat/webapps/pxbn/upload/
分享到:
相关推荐
在本教程中,我们将探讨如何利用WebWork实现文件上传功能,特别是针对Excel文件的处理。 首先,理解WebWork的MVC模式至关重要。在WebWork框架中,控制器负责接收用户请求,调用业务逻辑,并将结果传递给视图进行...
在这个“WebWork 文件上传 多个文件上传 范例”中,我们将深入探讨如何使用WebWork实现多文件上传的功能。 首先,了解文件上传的基本原理是必要的。在HTTP协议中,文件上传通常通过POST请求实现,其中包含了...
以下是一个简单的WebWork文件上传示例: ```java import org.apache.struts.upload.FormFile; ... public class UploadAction extends ActionSupport { private FormFile file; public String execute() { if ...
在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...
WebWork提供了丰富的特性,如类型转换、验证、国际化、文件上传和下载等,这些功能使得开发者可以更高效地构建高质量的应用程序。 #### 二、文件上传基础知识 文件上传是Web应用程序中的常见需求之一。在WebWork中...
WebWork是一个基于Java的轻量级MVC框架,它提供了处理多文件上传的能力。本篇文章将深入探讨如何在WebWork框架下实现多文件上传,并结合实际案例进行解析。 首先,了解WebWork框架的基本原理是必要的。WebWork通过...
在提供的文件列表中,我们看到有多个以".mht"结尾的文件,这是MHT(MHTML)文件,是一种单个文件中存储网页内容的格式,可能包含了关于WebWork文件上传和下载的讨论或者示例代码。例如,"webwork 文件下载 - New - ...
在Web开发中,文件上传和下载是常见的功能需求,本Demo展示了如何在WebWork框架下实现这两个操作。 首先,我们要理解上传和下载的基本原理。文件上传是指用户通过Web表单选择本地文件,然后将其发送到服务器的过程...
**一、WebWork文件上传** 1. **前端页面**:在HTML页面中,我们需要一个`<input type="file">`标签让用户选择要上传的文件。例如: ```html ``` 注意`enctype="multipart/form-data"`,这是上传文件时...
本文主要从三个方面给大家介绍webwork文件上传下载知识,包括以下三个方面: 1. 包装 Request 请求 2. 获取文件上传的解析类 3. 项目实战配置和使用 Web上传和下载应该是很普遍的一个需求,无论是小型网站还是大...
**一、WebWork文件上传** 1. **前端页面** 在HTML页面中,你需要创建一个`<input type="file">`标签让用户选择要上传的文件。例如: ```html 上传" /> ``` 注意,`enctype="multipart/form-data"`是必须...
在本文中,我们将深入探讨如何使用WebWork和iBatis框架来实现文件上传的功能。WebWork是一个基于Action的MVC(Model-View-Controller)框架,而iBatis则是一个SQL映射框架,用于简化Java应用程序中的数据库操作。...
本文将深入探讨WebWork2.2.7中的简单文件上传功能,这在现代Web应用中是必不可少的,允许用户上传图片、文档等各种类型的数据。 在Web开发中,文件上传通常涉及到表单提交和服务器端的处理。WebWork2.2.7支持使用...
"fileupload+dwr2+webwork2实现带进度条上传文件"这个主题涉及到三个关键技术和组件:FileUpload、Direct Web Remoting (DWR) 和 WebWork2,它们协同工作以提供一个带有进度条的高效、用户友好的文件上传体验。...
- 通过`<include>`节点,可以引入其他配置文件,如`webwork-default.xml`,这有助于将配置进行模块化,保持配置文件的清晰和可维护性。 - `<package>`节点定义了一个包,可以理解为一个命名空间或一组相关Action的...
webwork上传文件pdf文件说明文档
在本文中,我们将深入探讨如何使用WebWork框架来实现一个简单的图片上传功能,并在网页上显示上传的图片。WebWork是Java Web开发中...理解WebWork的工作机制和文件上传的基本流程,对于开发复杂的Web应用程序至关重要。
然后,我们利用WebWork的Action来处理文件上传。在Action类中,可以定义一个字段来接收上传的文件,例如`private File uploadedFile; private String uploadedFileContentType; private String uploadedFileFileName...
7. **其他的依赖JAR包**:如log4j.jar(日志记录)、commons-lang.jar(通用语言工具)、commons-fileupload.jar(文件上传)等,这些是WebWork或其依赖库的辅助组件。 安装和使用WebWork所需JAR包的过程通常涉及...