gpt4 book ai didi

c# - 从 url 通用 windows 应用程序下载并保存图片

转载 作者:行者123 更新时间:2023-11-30 14:08:35 25 4
gpt4 key购买 nike

我正在使用下面的代码从远程 url 下载图片并保存到本地存储文件夹

        try
{
var rootFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync( "MyAppName\\CoverPics", CreationCollisionOption.OpenIfExists);

var coverpic_file = await rootFolder.CreateFileAsync(filename, CreationCollisionOption.FailIfExists);
try
{
var httpWebRequest = HttpWebRequest.CreateHttp(coverUrl);
HttpWebResponse response = (HttpWebResponse)await httpWebRequest.GetResponseAsync();
Stream resStream = response.GetResponseStream();
using (var stream = await coverpic_file.OpenAsync(FileAccessMode.ReadWrite))
{
await resStream.CopyToAsync(stream.AsStreamForWrite());
}
response.Dispose();
}
catch //any exceptions happend while saving the picture
{
saved = false;
}
}
catch
{
//https://msdn.microsoft.com/en-us/library/windows/apps/br227250.aspx
//Raise an exception if file already present
saved = true;
}

这段代码在大多数情况下对我有用,但我注意到有几张图片没有完全下载。

我在一个异步 block 中调用此函数,以便在 foreach 循环内一次访问更多 tahn 100 张图像,最后其中很少有下载失败

[要么我可以看到正在创建一些无效文件

或部分图像仅在下载和其余区域我可以看到黑色色 block [看起来图像已损坏]。

所有图片的大小仅小于 1 MB

谁能帮我优化这段代码或指出代码中的错误,这样我就可以完整地下载所有图片

最佳答案

我的代码中没有发现任何错误。但是在尝试了一些不同的下载和保存文件的方法之后,我的代码看起来像这样

 try
{
HttpClient client = new HttpClient(); // Create HttpClient
byte[] buffer = await client.GetByteArrayAsync(coverUrl); // Download file
using (Stream stream = await coverpic_file.OpenStreamForWriteAsync())
stream.Write(buffer, 0, buffer.Length); // Save
}
catch
{
saved = false;
}

这段代码工作正常,没有引起任何问题所有图像都已完全下载,图像上不再有黑 block 问题。

如果有人能指出与我的第一个代码的不同之处,将对理解错误原因非常有帮助

关于c# - 从 url 通用 windows 应用程序下载并保存图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34603849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com