问题描述
我正在尝试在WinForms中制作一个简单的Webscraper,该Webscraper可以下载图像,然后将其保存在给定的网站上。我一直在各处寻找清楚发生的事情,并且几天来一直试图自己解决这个问题。感觉可能有一个简单的解决方法,我只是无法扩大自己的大脑来看到它。
现在,我的程序仅保存第一个字节[],因此会保留下载的第一个图片。它在整个循环中都这样做。为什么不占用下一个任务的下一个字节[]?
我这里真是个菜鸟,可能会缺少一些重要的东西,感谢您的帮助! 这是该方法的代码。
private async Task SaveImagesAsync()
{
HttpClient client = new HttpClient();
List<Task<byte[]>> tasks = new List<Task<byte[]>>();
FolderbrowserDialog folderbrowserDialog = new FolderbrowserDialog();
DialogResult result = new DialogResult();
folderbrowserDialog.ShowDialog();
if (result == DialogResult.OK)
{
List<string> urlCollection = new List<string>();
foreach (var item in textBoxImageURL.Lines)
{
if (!(item == ""))
{
tasks.Add(Task.Run(() => client.GetByteArrayAsync(item)));
urlCollection.Add(item);
}
else
{
continue;
}
}
var downloadedImages = await Task.WhenAny(tasks);
foreach (var url in urlCollection)
{
string filename = "Image" + GetFileExtension(url);
string path = Path.Combine(folderbrowserDialog.Selectedpath,filename);
FileStream fs = new FileStream(NextAvailableFilename(path),FileMode.Create);
await fs.WriteAsync(downloadedImages.Result,downloadedImages.Result.Length);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)