使用webClient实现图片同步,异步下载

WebClient.DownloadFile 方法

将具有指定 URI 的资源下载到本地文件。

命名空间:System.Net

程序集:System(在 system.dll 中)



同步实现参考代码:

private void btnsyndownload_Click(object sender, EventArgs e)
{
File.Delete("download.jpg");
try
{
if (!File.Exists("download.jpg"))
{
WebClient client = new WebClient(); client.DownloadFile("https://ss0.baidu.com/Po3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=181318733ad12f2ed105a8607fc0d5ff/94cad1c8a786c9171cc12b9dc53d70cf3ac75757.jpg", "download.jpg");
picpicture.Image = Image.FromFile("download.jpg");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}

    }

WebClient.DownloadFileAsync 方法

将具有指定 URI 的资源下载到本地文件。此方法不会阻止调用线程。

命名空间:System.Net
程序集:System(在 system.dll 中)



异步实现参考代码:

File.Delete("download.jpg");
try
{
if (!File.Exists("download.jpg"))
{
WebClient client = new WebClient();
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted);

client.DownloadFileAsync(newUri("https://ss0.baidu.com/Po3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=181318733ad12f2ed105a8607fc0d5ff/94cad1c8a786c9171cc12b9dc53d70cf3ac75757.jpg"),"download.jpg");

            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());
        }
    }
    void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e)
    {
        picpicture.Image = Image.FromFile("download.jpg");
    }

简单介绍一下WebClient:

WebClient 类提供向 URI 标识的任何本地、Intranet 或 Internet 资源发送数据以及从这些资源接收数据的公共方法。
WebClient 类使用 WebRequest 类提供对资源的访问。WebClient 实例可以通过任何已向 WebRequest.RegisterPrefix 方法注册的 WebRequest 子代访问数据。
注意
默认情况下,.NET Framework 支持以 http:、https:、ftp:、和 file: 方案标识符开头的 URI。 

下面描述用于将数据上载到资源的 WebClient 方法:
OpenWrite  检索一个用于将数据发送到资源的 Stream。
OpenWriteAsync  检索 Stream,它在不阻止调用线程的情况下将数据发送到资源。
UploadData  将字节数组发送到资源,并返回包含任何响应的 Byte 数组。
UploadDataAsync  在不阻止调用线程的情况下,将 Byte 数组发送到资源。
UploadFile  将本地文件发送到资源,并返回包含任何响应的 Byte 数组。
UploadFileAsync  在不阻止调用线程的情况下,将本地文件发送到资源。
UploadValues  将 NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
UploadValuesAsync  在不阻止调用线程的情况下,将 NameValueCollection 发送到资源,并返回包含任何响应的 Byte 数组。
UploadString  在不阻止调用线程的情况下,将 String 发送到资源。
UploadStringAsync  在不阻止调用线程的情况下,将 String 发送到资源。 

下面描述从资源下载数据的 WebClient 方法:
OpenRead  从资源以 Stream 的形式返回数据。
OpenReadAsync  在不阻止调用线程的情况下,从资源返回数据。
DownloadData 从资源下载数据并返回 Byte 数组。
DownloadDataAsync  在不阻止调用线程的情况下,从资源下载数据并返回 Byte 数组。
DownloadFile  从资源将数据下载到本地文件。
DownloadFileAsync  在不阻止调用线程的情况下,将数据从资源下载到本地文件。
DownloadString  从资源下载 String 并返回 String。
DownloadStringAsync  在不阻止调用线程的情况下,从资源下载 String。 

原文地址:http://blog.51cto.com/13758648/2119997

时间: 2024-10-08 20:12:42

使用webClient实现图片同步,异步下载的相关文章

Swift中利用NSURLConnection进行同步异步下载(实例解析)

原创blog,转载请注明出处 http://blog.csdn.net/hello_hwc 一.同步异步两个概念 简单来讲,同步就是函数或者闭包(objective c中的block)执行完毕才能返回.异步是立刻返回,然后异步执行的动作结束后,再进行回调. 二.同步下载 同步下载: class func sendSynchronousRequest(_ request: NSURLRequest, returningResponse response:AutoreleasingUnsafeMut

表情包的同步异步下载

同步下载 from lxml import etree import requests from urllib import request #保存图片 import os import re def parse_page(url): headers = { "User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/5

进击的UI---------------------沙盒,复杂对象写入&KVO,图片的异步下载

第十八节笔记 1.SandBox 2复杂对象写入 第十七节笔记 1KVO 2图片异步下载

图片的异步下载

////////下载图片//////// //方法一(暴力而有效,必须下载完才进入页面)同步 NSURL *url = [NSURL URLWithString:@"http://cc.cocimg.com/bbs/attachment/upload/07/128707.png"]; UIImage *imga = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:url]]; img1.image=imga; //

UI_18 图片异步下载、KVO

一.异步下载图片ImageViewDownloader 图?下载是iOS开发中常?的功能,但系统并未提供图?下载类. 为了便于后续使?,可以将图?下载封装到?个类?? (ImageDownloader) 新建SingleViewApplication,使用默认的Storyboard,向其中添加一个Button一个ImageView并关联属性.添加事件.点击Button实现异步下载并显示图片.AsynImageDownloader类封装了下载图片的方法. 使用代理进行AsynImageDownlo

网络数据的下载(NSUrlconnection异步下载和NSstring同步下载)和UI界面数据的刷新(都是抛弃第三方库的一些本质)

<1>NSString同步下载        //字符串的类方法,会根据url向服务器发起同步的数据请求,并将请求结果作为返回值    //同步请求数据,会对程序的UI主线程造成阻塞,用户体验极差 NSString *str = [NSString stringWithContentsOfURL:[NSURL URLWithString:kUrl] encoding:NSUTF8StringEncoding error:nil];    //json格式的数据 进行json解析 数据最外层是

swift详解之十四 -----------NSThread 异步下载图片

NSThread 异步下载图片 在IOS中处理多线程有三个方案 , NSThread .NSOperation .GCD .当然GCD应该是最方便的 ,我们一个一个学 .先理解底层的,最后再使用最方便的 . NSThread: 优点:NSThread 比其他两个轻量级 缺点:需要自己管理线程的生命周期,线程同步.线程同步对数据的加锁会有一定的系统开销 我们先研究下用NSThread 异步加载网络图片 : NSThread有两种创建方式 ,一种是通过实例方法.一种是通过类方法. let threa

Swift正在使用NSURLConnection异步下载同步(实例解析)

原版的blog.转载请注明出处 http://blog.csdn.net/hello_hwc 一.同步异步两个概念 简单来讲.同步就是函数或者闭包(objective c中的block)运行完成才干返回. 异步是立马返回,然后异步运行的动作结束后.再进行回调. 二.同步下载 同步下载: class func sendSynchronousRequest(_ request: NSURLRequest, returningResponse response:AutoreleasingUnsafeM

异步下载图片的综合应用

1.要解决的问题. 给单元格设置从网络上下载的图片. 2.思路: >1.先同步下载 bug:下载是一个耗时操作,会阻塞主线程 >2.异步下载图片 bug:图片发生错行. >从网络上请求下来的图片与单元格不匹配.为什么会这样?根本原因是因为重用单元格. 如图所示. tableView上有3个单元格.每个单元格有图片,文字.文字是通过plist加载,当向上滚动单元格,让,单元格1滚出界面,那么就会加载第4个单元格,第四个单元格仍然是新创建的,因为当单元格1尚未滚出视图,单元格4已经出来一部分