为了账号安全,请及时绑定邮箱和手机立即绑定

下载中文名的文件显示文件不存在,下载不带中文的能成功

String path = getServletContext().getRealPath("/") + "material/";

String filename = req.getParameter("filename");

File file = new File(path + filename);

if(file.exists()){

//设置相应类型application/octet-stream

resp.setContentType("application/x-msdownload");

//设置头信息

resp.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");

InputStream inputStream = new FileInputStream(file);

ServletOutputStream ouputStream = resp.getOutputStream();

byte b[] = new byte[1024];

int n ;

while((n = inputStream.read(b)) != -1){

ouputStream.write(b,0,n);


正在回答

2 回答

需要设置编码:    

resp.setHeader("Content-Disposition",                        "attachment;filename="+URLEncoder.encode(filename,"utf-8"));

需要导入        import java.net.URLEncoder;


0 回复 有任何疑惑可以回复我~

如果没有对客户端发送的中文参数进行转码,filename从客户端发过来的值就是乱码,导致在你服务器目录下找不到你要的文件,你可以打印一下filename的值到控制台,我觉得就是编码问题设置一下(request.setContextType(),request.setEncoding()....不知道有没有写错,你百度一下乱码问题。)

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

下载中文名的文件显示文件不存在,下载不带中文的能成功

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信