繁体   English   中英

使用间接URL通过C#下载

[英]Downloading by C# with indirect url

我有一个生成excel文件的间接链接。 我搜索了很多,发现一些方法没有做我需要的。 链接地址不直接引用excel文件,原因是每当请求URL时,网页都会创建一个新的excel文件__refreshes内容。 我使用了下面提到的不同方法。 我真正想要做的是,如果不打开浏览器,我想下载URL的内容(这是一个excel文件)并将其保存为excel文件。 这是链接 ,如果单击它,您将直接获得excel文件,但URL本身不包含excel文件的扩展名。
我使用了以下方法:

client.DownloadFile(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0", @"D:\a.xlsx");

上面的方法保存了内容,但遗憾的是它不能由excel显示,我不知道原因。

WebRequest request = HttpWebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
using (WebResponse response = request.GetResponse())
{
    Stream responseStream = response.GetResponseStream();
    StreamReader r = new StreamReader(responseStream);
    //third party methods
}

上面的代码也用于搜索,但它没有提供我需要的东西,我使用了一些第三方dlls将流保存为excel文件,并且再次保存的文件无法由excel打开。 我也使用过Process.Start但它打开了浏览器。 我不想打开任何浏览器。

它是压缩流。 你应该解压缩它

WebRequest request = HttpWebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0");
using (WebResponse response = request.GetResponse())
{
    Stream responseStream = response.GetResponseStream();
    using(var fs = File.Create("MarketWatchPlus-1394.4.24.xlsx"))
    {
        var zipStream = new System.IO.Compression.GZipStream(responseStream,  System.IO.Compression.CompressionMode.Decompress,true);
        zipStream.CopyTo(fs);
    }
}

感谢EZI的好答案。 只是把它作为另一种选择。 HttpWebRequest确实具有自动解压缩的功能。

HttpWebRequest request = WebRequest.Create(@"http://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0") as HttpWebRequest;
request.AutomaticDecompression = DecompressionMethods.GZip;
using (WebResponse response = request.GetResponse())
{
    using (Stream fs = File.Create("excelFile.xlsx"))
    {
        response.GetResponseStream().CopyTo(fs);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM