2017-07-11 4 views
3

インターネットから画像をダウンロードするプログラムがありますが、ほとんどの場合は完全に動作しますが、画像のsrcアドレスに " - "があり、IOExceptionが発生します。Java - srcにハイフンがある場合、インターネットから画像をダウンロードできない

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-コンテンツ」内など、このリンクのようにハイフンを持っている場合、これは動作しない唯一のインスタンスがある

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

任意のアイデア?

+0

あなたの投稿を編集し、取得した特定のIO例外とそのスタックトレースを表示できますか? – dFrancisco

+2

URLEncoderを使用するとうまくいくはずです – Daniel

答えて

2

あなたは、この(強調鉱山)が表示されますURLクラスのドキュメントをチェックアウトする場合

URLクラス自体はRFC2396で定義されたエスケープ機構に従って、任意のURLコンポーネントをエンコードまたはデコードしません。呼び出し元は、URLを呼び出す前にエスケープする必要のあるフィールドをエンコードする必要があります。また、URLから返されたエスケープされたフィールドをデコードする必要があります。

正しくエンコードするには、URIをURL文字列で初期化し、toURLメソッドを呼び出して、エンコードされたURLを取得する必要があります。

+0

URLEncoderは、名前にかかわらずURLコンポーネントをエンコードする*ではありません。 URLEncoderは、[application/x-www-form-urlencoded](https://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1)を使用してデータをエンコードするためのものです。 2つのエンコーディングは同じですが同じではありません。 URLコンポーネントを適切にパーセントエンコードするには、[URI](http://docs.oracle.com/javase/8/docs/api/java/net/URI.html)を作成してtoURLメソッドを呼び出します。 – VGR

+0

@VGRあなたは非常に正しいです - 私はそこでは速すぎました。私は私の答えを変えました。 – Daniel

関連する問題