struts2解决文件上传下载中文乱码问题

解决上传中文乱码问题

异常信息:

"Can not find a Java.io.InputStream with the name [downLoadFile] in the invocation stack. Check the tag specified for this action."

解决方法

第一步:struts.xml中配置统一编码

第二步:在DownLoadFileAction类的getDownLoadFile()方法中将要下载的文件转码

String str = new String(fileName.getBytes("iso8859-1"), "utf-8");


getDownLoadFile()方法如下

public InputStream getDownloadFile() throws UnsupportedEncodingException {
		// 统一编码为UTF-8,防止中文名无法识别
		String str = new String(fileName.getBytes("iso8859-1"), "utf-8");
		System.out.println("下载的文件名为:" + str);
		InputStream in = ServletActionContext.getServletContext().getResourceAsStream("/upload/" + str);
		if (null == in) {
			System.out.println(
					"Can not find a Java.io.InputStream with the name [downLoadFile] in the invocation stack. Check the  tag specified for this action.检查action中文件下载路径是否正确.");
		}
		return ServletActionContext.getServletContext().getResourceAsStream("/upload/" + str);
	}
控制台打印出的下载文件名:

下载的文件名为:IO流.txt
下载的文件名为:Object.txt
下载的文件名为:PS快捷键.txt
下载的文件名为:struts_note.txt
下载的文件名为:构造代码块.txt
下载的文件名为:知识.txt



你可能感兴趣的:(javaEE,struts2)