java - 下载文件的时候 ,文件名中包含 中括号, 导致下载失败!

 手机用户2602886747 发布于 2022-10-29 11:48

1.使用Xutil 进行的文件下载
2.只要文件中有 中括号,就会下载失败,另起一个名字, 可以下载成功

爆出的异常为:

java.net.URISyntaxException: Illegal character in path at index 68...
at libcore.net.UriCodec.validate(UriCodec.java:63)
at java.net.URI.parseURI(URI.java:402)

异常详细如下:
08-16 10:06:50.183 31228-31228/ E/URIBuilder.(L:55): Illegal character in path at index 68: http://***cn:8099/sczh//upload/5f534d87a3e148048b275ea5858f27f9[202]再试一下.doc
                                                                              java.net.URISyntaxException: Illegal character in path at index 68: http://**h//upload/5f534d87a3e148048b275ea5858f27f9[202]再试一下.doc
                                                                                  at libcore.net.UriCodec.validate(UriCodec.java:63)
                                                                                  at java.net.URI.parseURI(URI.java:402)
                                                                                  at java.net.URI.(URI.java:204)
                                                                                  at com.lidroid.xutils.http.client.util.URIBuilder.(URIBuilder.java:53)
                                                                                  at com.lidroid.xutils.http.client.HttpRequest.setURI(HttpRequest.java:156)
                                                                                  at com.lidroid.xutils.http.client.HttpRequest.(HttpRequest.java:60)
                                                                                  at com.lidroid.xutils.HttpUtils.download(HttpUtils.java:297)
                                                                                  at com.lidroid.xutils.HttpUtils.download(HttpUtils.java:263)
                                                                                  at com.fenghua.traffic.activity.GongGaoInfoActivity.onClick(GongGaoInfoActivity.java:193)
                                                                                  at android.view.View.performClick(View.java:5200)
                                                                                  at android.view.View$PerformClick.run(View.java:21163)
                                                                                  at android.os.Handler.handleCallback(Handler.java:739)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5459)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
08-16 10:06:50.187 31228-31650/com.fenghua.traffic E/RetryHandler.retryRequest(L:91): retry error, curr request is null
08-16 10:06:50.199 31228-31228/com.**.**E/error: com.lidroid.xutils.exception.HttpException: java.io.IOException: Target host must not be null, or set in parameters. scheme=null, host=null, path=--java.io.IOException: Target host must not be null, or set in parameters. scheme=null, host=null, path=
3 个回答
  • 最主要就是这几句啦,如果你手机访问还是出错,那么基本可以肯定是手机浏览器的缓存了,你试着在地址后面跟上一个随机字符串再测试一下。

    response.setHeader("Content-Type","application/octet-stream; charset=UTF-8");
    String filepath = "/var/www/web/upload/5f534d87a3e148048b275ea5858f27f9[202]再试一下.doc";
    File file = new File(filepath);
    String filename = URLEncoder.encode(file.getName(), "utf-8");
    response.setHeader("Content-Disposition", "attachment;filename=\"" + filename + "\"");
    2022-11-12 01:46 回答
  • URL里面特殊字符要做转义的,比如用URLEncoder

    2022-11-12 01:46 回答
  • Illegal character in path at index 68: http://**h//upload/5f534d87a3e148048b275ea5858f27f9[202]再试一下.doc

    URIEncoder 肯定可以解决这个异常。
    楼主在编码之后如果还出现错误,请仔细核对错误信息噢。就比如说上面的URL是否真的完全编码。

    2022-11-12 01:46 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有