Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
387 views
in Technique[技术] by (71.8m points)

如下代码,是java后台的一个response,为什么下载docx没有问题,而下载xlsx跟png、txt有问题?

`

private String getYxPicById(HttpServletRequest request,HttpServletResponse response) {
        try {
            request.setCharacterEncoding("utf-8");
            String YxPicId = (String) request.getParameter("YxPicId");
            String ATTACHMENT_NAME = (String) request.getParameter("ATTACHMENT_NAME");
            ATTACHMENT_NAME = URLDecoder.decode(ATTACHMENT_NAME, "UTF-8");
            logger.info("ATTACHMENT_NAME:"+ATTACHMENT_NAME);
            logger.info("YxPicId:"+YxPicId);
            boolean result =  getPicFromYxpt(request,YxPicId,ATTACHMENT_NAME);
            response.setHeader("Content-Disposition", "attachment;filename="+ATTACHMENT_NAME);
            response.setContentType("application/x-msdownload");
            if (result) {
                ServletContext ctx = request.getSession().getServletContext();
                InputStream is = ctx.getResourceAsStream("/upload/attachment/"+ATTACHMENT_NAME);
                OutputStream os = response.getOutputStream();
                byte[] buffer = new byte[1024];
                int i = -1;
                while ((i = is.read(buffer)) != -1) {
                    os.write(buffer, 0, i);
                }
                os.flush();
                os.close();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

`


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
response.setContentType("application/x-msdownload");

已经指定数据格式为word。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...