欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-12-22 23:51:39
WebClient.DownloadFile 方法 将具有指定 URI 的资源下载到本地文件。 命名空间:System.Net 程序集:System(在 system.dll 中) 同步实现参考代码: private void btnsyndownload_Click(object sender, ......

 

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。