当前位置:  开发笔记 > 编程语言 > 正文

从网页通用Windows应用程序下载并保存图片

如何解决《从网页通用Windows应用程序下载并保存图片》经验,为你挑选了1个好方法。

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

        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;
        }

在大多数情况下,此代码对我有用,但我注意到,对于少数图片,图像不能完全下载.

我在异步块中调用此函数,在foreach循环内单个go中更多tahn 100个图像,最后几个是失败的下载

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

或仅在下载和其他区域的图像的一部分,我可以看到黑色块[看起来像图像已损坏].

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

有人可以帮助我优化这段代码或指出代码中的错误,这样我就可以完全下载所有图像



1> Jibin Mathew..:

我的代码中没有看到任何错误.但在尝试了一些不同的下载和保存文件的方法后,我的代码就像这样

 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;
            }

并且此代码工作正常而不会导致任何问题所有图像都完全下载,并且没有更多的图像黑块问题.

如果任何人可以指出我的第一个代码的差异将真正有助于理解错误的原因

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有