1
イメージリンクのリストをダウンロードしてハードドライブにダウンロードするこの小さなツールを作成しましたが、画像の一部が不完全で(Check this picture)、例外も発生しません。以下のコードは私のツールで使用しているダウンロード方法を示しています。ダウンロード済みのファイルが不完全または破損しています
private void Download(string url)
{
try
{
HttpWebRequest Request = WebRequest.Create(url) as HttpWebRequest;
Request.Method = WebRequestMethods.Http.Get;
Request.Timeout = 60 * 1000;
FileInfo ImageFile = new FileInfo(Path.Combine(BaseDirectory, Path.GetFileName(url)));
if (!ImageFile.Exists)
{
using (HttpWebResponse Response = Request.GetResponse() as HttpWebResponse)
{
if (Response.StatusCode.Equals(HttpStatusCode.OK))
{
using (FileStream FStream = new FileStream(ImageFile.FullName, FileMode.Create, FileAccess.Write, FileShare.None, 4096))
Response.GetResponseStream().CopyTo(FStream, 4096);
}
}
}
}
catch (Exception e)
{
Console.WriteLine("Error Downloading: {0}\r\nMessage: {1}", url, e.Message);
}
}
問題がサーバー側にあるのか、自分のコードに問題があるのか分からないので、どう思いますか?
私はこれを行うためのusingステートメントを使用していないのですか、FileStreamを閉じるだけですか?また、たまにしか起こらず、ダウンロードした画像に問題はなく、混乱してしまいます。 – PavilionVI
使用すると、オブジェクトをきれいに破棄するDispose()が呼び出されます。ストリームが破棄される前にフラッシュされるという保証はありません。それがうまくいった時はおそらく、ストリームが何か他の要因によって洗い流されたためです。 Flush()を呼び出してどうやったらどうなるか確認してください。 –
Ok。私はそれを試して、後で報告します。 – PavilionVI