Struts上传实现很简单,不需要自己用什么common_fileupload包,struts中用一个FormFile的接口用到了common_fileupload包的东西。在StrutsForm中只要定义一个FormFile类型的属性就行了。
程序代码
protected FormFile file;
public FormFile getFile() {
return file;
}
public void setFile(FormFile theFile) {
this.file = theFile;
}
uploadFile.jsp文件:
程序代码
<html:form action="/uploadFile" enctype="multipart/form-data">
File Description : <html:text property="description"/>
<br />
Please select the file that you would like to upload: <br /><html:file property="file" /></p>
<html:submit/>
</html:form>
在jsp的Form定义里面 “enctype="multipart/form-data"”不能忘记,不然会出现一个“BeanUtils.populate”属性赋值的错误。
程序代码
UploadFileForm uploadFileForm = (UploadFileForm) form;
String desciption = uploadFileForm.getDescription();
FormFile file = uploadFileForm.getFile();
String fileName = file.getFileName();
String contentType = file.getContentType();
String size = (file.getFileSize() + " bytes");
String filePath = null;
try {
stream = file.getInputStream();// ームホトシ�カチネ�
filePath = getServlet().getServletContext().getRealPath("/upload");
OutputStream bos = new FileOutputStream(filePath + "/"+ file.getFileName());
System.out.println(filePath+"\\"+file.getFileName());
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
bos.write(buffer, 0, bytesRead);
}
bos.close();
stream.close();
} catch (Exception e) {
// do some thing
}
info = "The file uploaded to the path:\""+filePath+"\"";
// log the success infomation
file.destroy();
这样文件上传基本就可以成功了,但是存在中文乱码问题。
在Action的excute方法里面设置
程序代码
String encoding = "gb2312";
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset=" + encoding + "");
但是利用form的get方法取出来的值仍然是乱码,后来知道了,Struts从request里利用BeanUtils.populate把值赋给form的时候已经是乱码的,excute方法里面设置是没用的,所以要在赋值之前进行编码转换,所以下面两种方法才是有效的:
1.在filter里面对request,response的编码进行设定
2.在RequestProcessor.process()里进行编码设定
方法一:filter过滤
程序代码
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
String encoding = "gb2312";
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset=" + encoding + "");
filterChain.doFilter(request,response);
}
web.xml中
程序代码
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>xxx.xxxx.xxxx.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
方法二:自己写一个RequestProcessor,
程序代码
public class EncodingProcessor extends RequestProcessor {
public void process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String encoding = "gb2312";
request.setCharacterEncoding(encoding);
response.setContentType("text/html;charset=" + encoding + "");
super.process(request, response);
}
}
并在struts-config.xml里设定:
程序代码
<controller processorClass="xxx.xxxx.xxxx.EncodingProcessor" />
出自 http://www.lurenjia.net/article.asp?id=184
分享到:
相关推荐
Struts2文件上传组件在处理文件名时,如果不进行适当的编码设置,也会出现同样的问题。 解决这个问题的关键步骤如下: 1. **配置Struts2拦截器**:Struts2的文件上传拦截器(`org.apache.struts2.interceptor....
在本文中,我们将深入探讨如何使用Ext3.2与Struts框架实现文件上传功能,同时解决中文乱码问题。这两个技术结合在一起,可以为Web应用提供高效、稳定的文件上传解决方案。 首先,Ext3.2是一个JavaScript库,它提供...
04.用struts获取上传文件名和解决中文乱码 05.保存用struts获取的上传文件内容 06.分析文件上传时的一个安全问题 07.分析高质量项目该如何处理文件上传 08.处理不上传文件时的情况 09.在配置文件中配置上传文件的...
04.用struts获取上传文件名和解决中文乱码 05.保存用struts获取的上传文件内容 06.分析文件上传时的一个安全问题 07.分析高质量项目该如何处理文件上传 08.处理不上传文件时的情况 09.在配置文件中配置上传文件的...
在本主题中,我们将深入探讨如何使用Flex进行文件上传和下载,并解决过程中可能出现的中文乱码问题。 一、Flex文件上传 1. Flex组件:Flex中可以使用`FileReference`组件来实现文件上传。用户通过选择文件后,`...
`jspsmartupload`是一个专门用于Java Web应用程序的文件上传组件,它可以帮助开发者实现用户友好的文件上传功能。然而,在处理中文文件名或者中文内容时,由于编码不一致或处理不当,可能导致乱码。本篇将详细讨论...
`jspSmartUpload`是一个基于Java的文件上传组件,它提供了强大的文件上传和管理功能,特别对于处理中文文件名有着独特的解决方案。在使用`jspSmartUpload`时,我们需要注意以下关键知识点: 1. **编码设置**:`jsp...
在提供的"乱码处理"标签中,我们可以推测这个压缩包可能包含了一个自定义的Java类或组件,用于处理SSH框架下的乱码问题。这个类可能会覆盖上述的一些关键步骤,或者提供更便捷的解决方案来统一处理乱码问题。 总的...
本文将围绕Struts的核心知识点展开,包括文件上传、复选框值的处理以及解决中文乱码问题。 1. **Struts 文件上传** 在Struts中,文件上传是通过内置的Commons-FileUpload组件实现的。`FormFile` 是Struts提供的一个...
Struts2.0字符编码问题在开发Web应用时是一个常见的挑战,尤其是在处理用户输入时,如果编码不统一,可能会导致乱码现象。本示例通过使用过滤器(Filter)来解决这个问题,确保了数据在传输过程中的正确编码,从而...
5. **中文文件名支持**:UploadBean对中文文件名的处理更加友好,避免了在上传过程中出现乱码问题,这是相对于其他上传组件的一大改进。 6. **文件重命名**:如果服务器上存在同名文件,UploadBean可以自动重命名...
此设置确保了Struts2在处理国际化字符串时能够正确解析和显示各种语言的字符,避免乱码问题。 #### 2. struts.action.extension 这个常量用来指定Struts2的Action扩展名,默认为“action”。然而,如示例中所示,将...
JSPSmartUpload 是一个在Java Web开发中常用的文件上传组件,它提供了方便的API来处理文件上传和下载的操作。在使用 JSPSmartUpload 时,可能会遇到一些常见问题,如中文文件名乱码以及如何防止重复下载导致积分多次...
- `fileupload`可能是某个具体的文件上传组件或类库的名称,比如Apache的Commons FileUpload库,它提供了解决文件上传的API,帮助开发者处理文件上传的细节,如内存阈值、临时存储路径等。 在实际开发中,我们不仅...
总的来说,这个示例展示了如何使用`Flex`作为前端,结合`Servlet`(可能在`Struts`框架下)作为后端,实现多文件上传功能,并解决了常见的中文乱码问题。这对于需要构建交互性强且支持多文件上传的Web应用来说,是一...
在IT行业中,文件上传是网页应用中常见的功能之一,尤其在处理用户提交的图片或文档时。...在实际项目中,还需要考虑错误处理、安全性(如防止文件覆盖、非法文件类型)以及性能优化(如分块上传、断点续传)等问题。
然后,作者引入了 Commons-FileUpload,这是一种开源组件,可以上传大文件,并且 Struts 也采用它处理上传。 SmartUpload 的使用方法: 1. 下载 smartupload.jar 文件,放在 webroot 下的 lib 目录下。 2. 在代码...
JSPSmartUpload是一个用于Java Web应用程序的上传组件,它提供了处理文件上传的强大功能,尤其在处理大文件、多文件上传以及处理各种编码问题方面表现出色。在这个“jspsmartupload”示例中,我们主要关注的是如何...
对于使用JSP(JavaServer Pages)技术的开发者来说,实现文件上传的方法有很多,例如使用jspsmart公司的SmartUpload、Struts框架提供的组件等。本文将重点介绍如何使用Cos组件来实现文件上传功能。 #### Cos组件...