设置header的Content-Disposition时,要用编码后的文件名。
方式一:urlFileNameString = new String(filenameString.getBytes(),"ISO-8859-1");
方式二:urlFileNameString = URLEncoder.encode(filenameString,"UTF-8");
在读取服务器文件时还是使用从request中直接读取的文件名filenameString。
完整代码如下:
@WebServlet(urlPatterns = "/download")
public class FiledownloadServlet extends HttpServlet{
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
OutputStream outputStream;
InputStream inputStream;
String filenameString = request.getParameter("filename");
if(filenameString == null) {
outputStream = response.getOutputStream();
outputStream.write("Please input filename.".getBytes());
outputStream.close();
return;
}
inputStream = getServletContext().getResourceAsStream("/store/" + filenameStr