URLから画像をダウンロードする方法があります。以下のように..
public static byte[] downloadImageFromURL(final String strUrl) {
InputStream in;
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
URL url = new URL(strUrl);
in = new BufferedInputStream(url.openStream());
byte[] buf = new byte[2048];
int n = 0;
while (-1 != (n = in.read(buf))) {
out.write(buf, 0, n);
}
out.close();
in.close();
}
catch (IOException e) {
return null;
}
return out.toByteArray();
}
画像の URL があり、有効です。例えば。
私の問題は、画像が本当に存在しない場合はダウンロードしたくないということです.Like ....
この画像は私の方法ではダウンロードできません。では、与えられた画像の URL が実際には存在しないことをどのように知ることができますか。URL を検証したくありません (それは私の解決策ではないかもしれません)。
それで、私はそれをグーグルで検索しました。この記事から... URLが存在するかどうかを確認する方法、またはJavaで404を返す方法は? URLを使用してリモートサーバーにファイルが存在するかどうかを 確認します
しかし、この con.getResponseCode() は常にステータス コード "200" を返します。これは、私のメソッドが無効な画像 URL もダウンロードすることを意味します。だから、私は私のbufferStreamを次のように出力します...
System.out.println(in.read(buf));
無効な画像 URL は「43」を生成します。したがって、これらのコード行をメソッドに追加します。
if (in.read(buf) == 43) {
return null;
}
大丈夫です。しかし、それで必ず満足できるとは思いません。それを取得する別の方法はありますか?私は正しいですか?提案があれば本当に感謝します。この問題は私の頭を構成するかもしれません。私の質問を読んでくれてありがとう。
*アップデート
このダウンロードメソッドを呼び出し、ダウンロードした画像をディレクトリに保存します..
// call method to save image
FileSupport.saveFile(filePath+".JPG", data);
その後、次のように出力しようとしました...
File file = new File(filePath+".JPG);
System.err.println(file.length());
また、無効な画像 URL に対して「43 」が生成される場合もあります。すべての無効な URL に対して「43」が返される理由を知りたいです。「43」とは?