#利用JavaWeb实现下载操作时,文件名称含有中文。在访问时报如下错误
信息: Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
##这是我的代码
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
//获取文件的名称
String fileName=new String(request.getParameter("filename").getBytes("ISO-8859-1"),"UTF-8");
System.out.println(fileName);
String type=request.getServletContext().getMimeType(fileName);
//设置响应头信息 Content-type
response.setHeader("Content-Type", type);
//设置响应头信息 Content-Disposition 让浏览器以下载的方式打开文件
response.setHeader("Content-Disposition", "attachment;filename="+fileName);
String mimeType=this.getServletContext().getMimeType(fileName);
response.setContentType(mimeType);
//创建流 输入和输出
String path=request.getServletContext().getRealPath(fileName);
InputStream in=new FileInputStream(path);//绝对路径
OutputStream out=response.getOutputStream();
int len=0;
byte[] b=new byte[1024];
while((len=in.read(b))!=-1){
out.write(b, 0, len);
}
in.close();
out.close();
}
这是html页面a标签的内容
<a href="DownFileServlet?filename=file/jbit.log">下载jbit.log</a><br/>
<a href="DownFileServlet?filename=file/SpringMVCMybatis.rar">下载SpringMVCMybatis.rar</a><br/>
<a href="DownFileServlet?filename=file/第一章.txt">下载第一章.txt</a><br/>
<a href="DownFileServlet?filename=file/第二章进程管理.txt">下载第二章进程管理.txt</a><br/>
在网上找了很多教程,包括改server.xml和catalina.properties文件,也试过降低Tomcat版本,但是都没有解决
求助各位大佬有没有别的方法