HTML页面:
<body>
<form method="post" action="Action?param=up" enctype="multipart/form-data">
<input type="text" name="text">
<input type="file" name="file">
<input type="submit" name="submit" value="提交">
</form>
</body>apache
Struts1的UploadForm表单对象定义一个变量:
protected FormFile file;
Action的转换处理:
UploadForm form = (UploadForm) form;
那么经过form可获取表单的相关信息
String fileName = file.getFileName();post
此时若是附件为中文文件名,那么fileName此时就会是乱码编码
那么问题就应该在Struts1的FormFile组建对编码的处理上了spa
跟踪源码发现,在包org.apache.struts.upload下,有一个类CommonsMultipartRequestHandler,它主要负责文件上传处理,
它使用的是DiskFileUpload来上传文件, DiskFileUpload upload = new DiskFileUpload();它的默认编码为ISO-8859-1,orm
所以对中文处理有乱码,能够在此修改它的编码:upload.setHeaderEncoding("utf8");
便可解决。对象
具体在以下代码处:
..............
public void handleRequest(HttpServletRequest request)
throws ServletException
{
ModuleConfig ac = (ModuleConfig)request.getAttribute("org.apache.struts.action.MODULE");ip
DiskFileUpload upload = new DiskFileUpload();
upload.setHeaderEncoding(request.getCharacterEncoding());
//upload.setHeaderEncoding("utf-8");
.........................utf-8