【问题标题】:Download file using c# where the file name is unknown and the path does not have an extension使用 c# 下载文件,其中文件名未知且路径没有扩展名
【发布时间】:2017-11-26 22:42:58
【问题描述】:

基本上我有一个看起来像这样的网址 http://127.0.0.1/here 单击时会自动下载一个 zip 文件。 我试过使用 webclient 方法,但似乎无法让它工作并不断出错。我试图让 webclient 下载该文件夹中的所有文件,但它每次都会爆炸并且无法正确访问 url。

我正在尝试让客户端应用程序从网络服务器下载文件。 Webclient.DownloadFile 不起作用并返回“未知错误”。我没有具体下载 zip 文件,而是尝试下载目录中的任何文件。

【问题讨论】:

  • 如果您使用网络浏览器手动打开http://127.0.0.1/here,会发生什么?
  • 它会自动打开一个下载窗口。比如“下载文件/取消”

标签: c# url web download webclient


【解决方案1】:

所以我让它工作了。原来网络客户端正在抛出 401,但我没有正确处理错误检查,所以我没有接受它。 添加“usedefaultcredentials”解决了我的问题。

        string url = "http://127.0.0.1/here";
        WebClient client = new WebClient();
        client.UseDefaultCredentials = true;
        client.DownloadFile(new Uri(url), @"C:\temp\test.zip");

【讨论】:

    【解决方案2】:

    通过使用GetResponseStream,您可以直接将下载的响应写入文件。

    public static void SaveUrlToFile(string uri, string filePath)
    {
        var fileReq =  HttpWebRequest.Create(uri) as HttpWebRequest;
    
        //Create a response for this request
        var fileResp = (HttpWebResponse) fileReq.GetResponse();
    
        //Get the Stream returned from the response
        using (var stream = fileResp.GetResponseStream())
        {
            using (var fileStream = File.OpenWrite(filePath))
            {
                stream.CopyTo(fileStream);
            }
        }
    }
    

    请注意,here 定义的 HttpWebRequest.Create(url) 需要传入一个 URI,因此请确保将 httphttps 放在开头。所以你的电话会像SaveUrlToFile("http://127.0.0.1/here", "output.zip")

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-09
      • 2014-06-06
      • 1970-01-01
      相关资源
      最近更新 更多