首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用c#从URL下载文件

如何使用c#从URL下载文件
EN

Stack Overflow用户
提问于 2017-11-03 12:25:46
回答 1查看 8.1K关注 0票数 1

我想从下面的地址下载一个.xlsx文件。http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08

通过自动单击链接,浏览器将下载一个文件。我试图从以下代码下载该文件:

代码语言:javascript
运行
复制
using (var client = new WebClient())
{
      client.DownloadFile("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08", @"D:\Archive\1396-08-08.xlsx");
} 

但它将在第一步下载一个与浏览器下载的文件不同的奇怪文件。

我也试过:

代码语言:javascript
运行
复制
System.Diagnostics.Process.Start(
"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");

但是这段代码有两个缺点:

1-打开一个不需要的浏览器。

我无法确定下载文件的任何路径或文件名。

我想获得完全相同的文件,将通过点击上面的链接地址下载。如何下载所需的文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-03 13:14:58

Lasse V gs ther Karlsen是正确的。您的浏览器足够聪明,可以解压缩文件,因为响应包含标题:

代码语言:javascript
运行
复制
content-encoding:"gzip"

您可以使用以下代码下载和解压缩文件(相应地调整文件名、路径等)

代码语言:javascript
运行
复制
void Main()
{
    using (var client = new WebClient())
    {
        client.Headers.Add("accept", "*/*");
        byte[] filedata = client.DownloadData("http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=1396-08-08");

        using (MemoryStream ms = new MemoryStream(filedata))
        {    
            using (FileStream decompressedFileStream = File.Create("c:\\deleteme\\test.xlsx"))
            {
                using (GZipStream decompressionStream = new GZipStream(ms, CompressionMode.Decompress))
                {
                    decompressionStream.CopyTo(decompressedFileStream);
                }
            }
        }
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47095791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档