关于根据url下载文件之空格符报错

前言

描述:本文主要是记录后端代码根据url获取文件时发生报错的解决方案

一、遇到的报错

java 复制代码
Serverreturned HTTPresponse code: 400 for URL

分析:由于我上传的Excel文件中存在空格符,导致代码在获取文件时发生报错

1、项目初始代码

java 复制代码
public Workbook generateExcelObject(String fileUrl) {
    try {
        // 获取文件数据
        URL url = new URL(fileUrl);
        InputStream inputStream = url.openStream();
        if (!(inputStream.markSupported())) {
            inputStream = new PushbackInputStream(inputStream, 8);
        }

        // 生成excel对象
        Workbook book = WorkbookFactory.create(inputStream);
        return book;
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
}

二、解决方案

1、直接替换

java 复制代码
	URL url = new URL(fileUrl.replace(" ", "%20"));

2、使用 URLEncoder.encode

java 复制代码
        // 对文件链接中的空格进行URL编码处理
        String encodedUrl = URLEncoder.encode(fileUrl, "UTF-8");

总结

实际测下来,方法1 可以成功,方法2不行,依然会在 InputStream inputStream = url.openStream(); 发生报错。原因是方法2把//也转为字符了,然后报错没有协议

相关推荐
q***465230 分钟前
Spring中使用Async进行异步功能开发实战-以大文件上传为例
java·后端·spring
万物皆字节32 分钟前
spring ai 初始化工具,代码链分析
spring
q***9941 小时前
Redis的Spring配置
数据库·redis·spring
q***49452 小时前
SpringGateway网关(Spring Gateway是Spring自己编写的,也是SpringCloud中的组件)
spring·spring cloud·gateway
mqiqe3 小时前
【Spring AI MCP】四、MCP 服务端
java·人工智能·spring
我是小妖怪,潇洒又自在3 小时前
springcloud alibaba搭建
后端·spring·spring cloud
L.EscaRC4 小时前
Spring IOC核心原理与运用
java·spring·ioc
在逃热干面4 小时前
(笔记)获取终端输出保存到文件
java·笔记·spring
海边夕阳20066 小时前
主流定时任务框架对比:Spring Task/Quartz/XXL-Job怎么选?
java·后端·spring·xxl-job·定时任务·job
帧栈6 小时前
开发避坑指南(72):HttpHeaders 的add()方法和set()方法有什么区别?
java·spring·http