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" />

转载于:https://blog.51cto.com/zhouhua/156308

struts文件上传以及中文乱码问题相关推荐

  1. java中ftp文件上传和中文乱码解决

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 前几天 有个需求就是上传文件的时候,本地存一份,其他服务器也保存一份,于是就研究了一下,功能只实现了 ...

  2. struts上传word和excel文件到oracle,Struts文件上传,下载,重传,预览

    [Struts2]☆★之文件上传,下载,重传,预览 今日群里一兄弟问我能否给一份struts文件上传下载的例子,因为自己项目比较紧所以想在网上找 些源码给他,但是纵观全网,写的都不是太全,这让新手使用 ...

  3. java formfile_基于Struts文件上传(FormFile)详解

    Struts中FormFile用于文件进行上传 1.在jsp文件中进行定义 名字: 头像: 2.在Form表单中定义FormFile /* * Generated by MyEclipse Strut ...

  4. struts文件上传

    文件上传的三种方案: 1.上传到tomcat服务器 (上传图片的存放位置与tomcat服务器的耦合度太高,会导致系列的问题) 2.在数据库表中建立二进制字段,将图片存储到数据库(会导致数据库的表数据量 ...

  5. Struts文件上传包含修改文件上传参数,多文件上传

    配置xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC& ...

  6. Struts文件上传与下载详解_文件的下载

    在 两篇我们主要说的是文件的上传,既然有上传那就有下载,那么咱们看一下struts里面是怎么个下载法! 1.写个文件下载的表单页面: <a href="downLoad.action? ...

  7. Struts文件上传与下载详解 _上传多个文件

    在上一篇中给大家列出的单个文件的上传,那么这一篇咱们讲讲上传多个文件改怎么作呢?由于过程和上传单个文件的类似,所以在这里不细说,相信大家都能看懂,看不懂的可以在评论区留言,我看到之后会及时回复的!! ...

  8. Struts文件上传与下载详解_上传单个文件

    大家都知道Servlet上传文件的时候用的是commons-fileupload插件上传的,但是过程极其的麻烦,同样Struts2也有自带的文件上传,但是过程比Servlet里面的简单了不少,接下来请 ...

  9. struts文件上传 java_Struts上传文件

    Struts上传文件分为两个步骤: 1). 首先将客户端上传的文件保存到Struts.multipart.saveDir键所指定的目录中,如果该键所对应的目录不存在,那么就保存到javax.servl ...

最新文章

  1. oracle java rmi 漏洞,Oracle Java SE Java运行时环境RMI子组件远程漏洞(CVE-2011-3556)
  2. 基于OpenCV的图像分割处理!
  3. linux monitor模式,ubuntu14.04 安装linux-802.11n csitool Monitor模式
  4. Java实现选择排序及其优化
  5. python安装第三方包总是超时_(python pip安装第三方库超时问题(raise ReadTimeoutErrorself._pool, None, 'Read timed out.')...
  6. javascript教程_JavaScript教程
  7. CSS 设置表格格式
  8. Java-发送邮件descriptor
  9. 吴恩达神经网络和深度学习-学习笔记-34-LeNet-5 + Alexnet + VGG
  10. learning scala 变量
  11. mongoDB VS PostgreSQL dml performance use python (pymongo py-postgresql)
  12. DDS(Direct Digital Synthesizer)数字频率合成器
  13. Win10编译和测试libModbus
  14. Android UI设计之十自定义ListView,实现QQ空间阻尼下拉刷新和渐变菜单栏效果
  15. Unity 艺术字体制作
  16. 第五项修炼与架构师感想
  17. java惊魂_我的世界孤儿院惊魂
  18. Ubuntu 查看文件以及磁盘空间大小管理
  19. .net 邮箱验证码 邮箱验证码实现用户注册
  20. 百度地图经纬度和像素坐标互转

热门文章

  1. 易语言 图片插入超级列表框_是谁说图片排版很难?掌握这4个PPT图片排版技巧,1分钟全部搞定...
  2. 通达信服务器维修点查询,通达信验证服务器数据库修改
  3. 查网站服务器ip 被k,网站被K的排查方法
  4. python中哪些词是敏感字词_python实现敏感词过滤的几种方法
  5. scala 主构造函数_Scala-构造函数
  6. Netcraft :2019年4月全球Web服务器排名 nginx首度登顶
  7. 2017年游戏营收报告公布,谁是去年最大的赢家?
  8. R软件的下载及安装(截图步骤详细)
  9. 《剑指offer》跳台阶
  10. 机器学习中梯度下降法和牛顿法的比较