@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String path = req.getSession().getServletContext().getRealPath("upload");
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(2048*1024);
myProgressListener getBarListener = new myProgressListener(req);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setProgressListener(getBarListener);
try {
List formList = upload.parseRequest(req);
Iterator<Object> formItem = formList.iterator();
// 将进度监听器加载进去
while (formItem.hasNext()) {
FileItem item = (FileItem) formItem.next();
if (item.isFormField()) {
System.out.println("Field Name:" + new String(item.getFieldName().getBytes(),"UTF-8"));
} else {
String fileName = item.getName().substring(item.getName().lastIndexOf("\\")+1);
if (req.getHeader("User-Agent").toLowerCase().indexOf("firefox") >0){
try {
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
} catch (Exception e) {
e.printStackTrace();
}//firefox浏览器}
}else {
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
fileName=URLDecoder.decode(fileName);
} catch (Exception e) {
e.printStackTrace();
}//IE浏览器
}
String s2=new String(fileName.getBytes(),"UTF-8");
System.out.println("Field Names:" + fileName);
System.out.println("Field Names2:" + s2);
File file = new File(path
+ "\\" + fileName);
if(file.exists()){
file.mkdirs();
}
System.out.println(path
+ "\\" + fileName);
OutputStream out = item.getOutputStream();
InputStream in = item.getInputStream();
req.getSession().setAttribute("outPutStream", out);
req.getSession().setAttribute("inPutStream", in);
item.write(file);
}
}
这是为何
后台打印:06_基于springmvc实现????用户管理03_异常处理.avi
String s2=new String(fileName.getBytes(),"UTF-8"); 得到的是上面的文件名。。。为什么会这样呐。
真实文件:06_基于springmvc实现简单用户管理03_异常处理.avi
为什么简单两个字会乱码
------解决思路----------------------
你jsp和tomcat的编码是什么呢