java后端实现下载接口,出现Invalid character in header content [“Content-Disposition“]解决方法

java后端实现下载接口

public void download(HttpServletResponse response, String id) {
        List<ProjectVo> projectList = projectManagemenet.getProjectList();
        String filepath = "";
        ServletOutputStream ops = null;
        for (ProjectVo projectVo : projectList) {
            if (projectVo.getUid().equals(id)){
                File file = new File(path);
                filepath = file.getParentFile() + "/" + projectVo.getPath();
                response.setContentType("application/octet-stream");
                response.setCharacterEncoding("utf-8");
                response.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(projectVo.getName()) +".sgp");

                response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
                File file1 = new File(filepath);
                try {
                    InputStream inputStream = new FileInputStream(file1);
                    ops = response.getOutputStream();
                    IOUtils.copy(inputStream,ops);
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }

    }

直接使用项目名作为文件名,因为项目名需要转码,所以使用java自带的URLEncoder.encode()进行转码

后端使用URLEncode进行编码传输的时候,传到前端还需要前端进行解码一下即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示是因为在请求头中出现了无效字符,可能是因为请求头中的某个字段值不符合规范或者包含了非法字符。建议检查请求头中的所有字段值,确保它们都符合规范,并且不包含任何非法字符。如果还是无法解决问题,可以尝试使用其他的请求头字段值。 ### 回答2: 这个错误提示通常是因为在 HTTP 头部中存在无效字符引起的。HTTP 头部是 HTTP 请求和响应中的一些元数据,用于描述正文中的内容类型、长度等信息。常见的 HTTP 头部包括 Host、Content-Type、Content-Length 等。 可能会发生无效字符的情况通常是因为在请求或响应头部中输入了不支持的字符(例如换行符、制表符、空格等)。这些字符会导致 HTTP 解析器无法正确解析请求或响应中的头部内容,从而导致错误的出现解决该错误的方法有以下几种: 1. 检查 HTTP 请求和响应头部是否包含无效字符,重写包含有问题的请求或响应头部; 2. 检查请求或响应头部是否存在空格或制表符等无法识别的字符,如果有,则删除这些字符; 3. 避免使用特殊字符和无效字符,使用标准的 HTTP 头部格式。 在实际应用开发中,我们应该注意规范化 HTTP 请求和响应头部,确保其格式正确、符合标准,避免出现类似的错误。 ### 回答3: “error: invalid character in header content ["host"]”是一种常见的HTTP错误。出现这个错误通常是由于HTTP头中存在不合法的字符,比如说一个非ASCII字符等。这个错误一般会在Web服务器上出现,它会导致服务器无法解析请求的数据,从而返回一个错误响应。 出现这种错误的原因可能有很多。最常见的原因可能是在HTTP头中使用了unicode字符或者某些特殊字符,导致服务器无法正确解读HTTP请求。此外,也有可能是由于客户端发送的HTTP请求格式不正确,比如说请求头与请求体之间没有正确分隔符等,也会导致服务器无法正确解析请求头。 解决这个错误的方法也有很多。首先可以尝试去掉不合法字符,并重新发送请求。如果这个方法没有解决问题,可以尝试查看客户端发送的HTTP请求格式是否正确。如果请求格式正确却还是出现错误,那么可以尝试使用其他的HTTP客户端进行请求,或者联系Web服务器管理员寻求帮助。 总的来说,“error: invalid character in header content ["host"]”是一种比较常见的HTTP错误,出现这个错误需要考虑多种因素。要解决这个问题,需要对请求格式以及HTTP头的内容进行分析,寻找错误的根本原因,才能最终解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值