【问题标题】:Download files from url to local device in .Net Core将文件从 url 下载到 .Net Core 中的本地设备
【发布时间】:2017-08-30 10:17:18
【问题描述】:

在 .Net 4.0 中,我使用 WebClient 从 url 下载文件并将它们保存在本地驱动器上。但我无法在 .Net Core 中实现同样的目标。

谁能帮我解决这个问题?

【问题讨论】:

  • 你确定 asp.net-core-mvc 是正确的标签吗?从您的问题来看,您似乎在谈论客户端软件。无论哪种方式:如果要下载文件,请使用 HttpClient

标签: c# asp.net-core .net-core


【解决方案1】:

WebClient.NET Core 中不可用。 (更新:来自2.0)因此在System.Net.Http 中使用HttpClient 是强制性的:

using System.Net.Http;
using System.Threading.Tasks;
...
public static async Task<byte[]> DownloadFile(string url)
{
    using (var client = new HttpClient())
    {

        using (var result = await client.GetAsync(url))
        {
            if (result.IsSuccessStatusCode)
            {
                return await result.Content.ReadAsByteArrayAsync();
            }

        }
    }
    return null;
}

【讨论】:

  • 对于读者,请注意您不应该以这种方式使用 HttpClient。一种选择是让 HttpClientFactory 处理 Httpclient 对象的生命周期。阅读more
【解决方案2】:

WebClient 可从.net core 2.0 获得

var wc = new System.Net.WebClient();
wc.DownloadFile( URL, @"c:\temp\myfile.txt");

【讨论】:

  • 很高兴知道,当您真的想下载文件而不是使用内容时。
  • 如果远程文件无法访问,或者 URL 错误会怎样?有没有办法知道文件是否下载成功?
  • @Stian 抛出异常
  • @Leandro:为什么?
  • 你有DownloadFileAsync方法(这是.net核心)
猜你喜欢
  • 2020-10-10
  • 1970-01-01
  • 1970-01-01
  • 2020-07-21
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-29
相关资源
最近更新 更多