关于根据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把//也转为字符了,然后报错没有协议

相关推荐
山海上的风7 小时前
Spring Batch终极指南:原理、实战与性能优化
spring·性能优化·batch·springbatch
找不到、了9 小时前
Spring的Bean原型模式下的使用
java·spring·原型模式
超级小忍9 小时前
Spring AI ETL Pipeline使用指南
人工智能·spring
Boilermaker199212 小时前
【Java EE】SpringIoC
前端·数据库·spring
写不出来就跑路12 小时前
Spring Security架构与实战全解析
java·spring·架构
sleepcattt13 小时前
Spring中Bean的实例化(xml)
xml·java·spring
小七mod14 小时前
【Spring】Java SPI机制及Spring Boot使用实例
java·spring boot·spring·spi·双亲委派
ruan11451415 小时前
Java Lambda 类型推断详解:filter() 方法与 Predicate<? super T>
java·开发语言·spring·stream
paopaokaka_luck15 小时前
基于SpringBoot+Vue的非遗文化传承管理系统(websocket即时通讯、协同过滤算法、支付宝沙盒支付、可分享链接、功能量非常大)
java·数据库·vue.js·spring boot·后端·spring·小程序
邓不利东20 小时前
Spring中过滤器和拦截器的区别及具体实现
java·后端·spring