【问题标题】:Java - Can't download image from internet if src has a hyphenJava - 如果 src 有连字符,则无法从 Internet 下载图像
【发布时间】:2017-07-11 18:07:20
【问题描述】:

我有一个程序,它涉及从该图像的 src 从 Internet 下载图像,它在大多数情况下都能完美运行,但是如果图像的 src 在地址中有一个“-”,我会得到一个 IOException。

BufferedImage image = null;
fileName = emailFirst + "_at_" + emailLast + " (" + fullName + ")";

URL url = new URL(imageUrl);
image = ImageIO.read(url);

System.out.println("DIRECTORY: " + directory);
ImageIO.write(image, "jpg", new java.io.File(directory + "\\" + fileName + ".jpg"));

唯一无法正常工作的情况是 url 有连字符,例如“wp-content”中的这个链接

https://www.applicoinc.com/wp-content/uploads/2016/04/Employee_Alex_Moazed.jpg

有什么想法吗?

【问题讨论】:

  • 您可以编辑您的帖子并显示您获得的特定 IO 异常及其堆栈跟踪吗?
  • 使用 URLEncoder 应该可以工作

标签: java image hyperlink save


【解决方案1】:

如果您查看 URL 类的文档,您会看到这一点(强调我的)

URL 类本身不会根据 RFC2396 中定义的转义机制对任何 URL 组件进行编码或解码。调用方有责任对在调用 URL 之前需要转义的任何字段进行编码,并对从 URL 返回的任何转义字段进行解码。

要正确编码,您必须使用您的 URL 字符串初始化 URI ,并调用 toURL 方法来获取编码后的 URL。

【讨论】:

  • URLEncoder not 用于编码 URL 组件,尽管它的名称。 URLEncoder 用于使用application/x-www-form-urlencoded 对数据进行编码。这两种编码相似但不相同。要正确地对 URL 组件进行百分比编码,请创建一个 URI 并调用其 toURL 方法。
  • @VGR 你说的很对——我的速度有点太快了。我改变了答案。
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 2016-07-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-09
  • 2017-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多