qq_loli控_03618958
2017-04-26 17:10
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);
需要设置编码:
resp.setHeader("Content-Disposition", "attachment;filename="+URLEncoder.encode(filename,"utf-8"));
需要导入 import java.net.URLEncoder;
如果没有对客户端发送的中文参数进行转码,filename从客户端发过来的值就是乱码,导致在你服务器目录下找不到你要的文件,你可以打印一下filename的值到控制台,我觉得就是编码问题设置一下(request.setContextType(),request.setEncoding()....不知道有没有写错,你百度一下乱码问题。)
Java中的文件上传下载
77393 学习 · 337 问题
相似问题