从带有c#的链接下载pdf

本文关键字:链接 下载 pdf | 更新日期: 2023-09-27 17:58:55

我有一个windows服务应用程序,需要从不同的公共网站下载pdf文件,并将其本地保存到服务器上的文件夹中

我试着使用系统。网WebClient执行类似的下载

 client = new WebClient();
 client.DownloadFile(new Uri(fileLink, UriKind.Absolute), destination);

destination是我需要将文件保存到的文件夹的完整路径和名称。例如:''server name''downloads''file123.pdf

fileLink是pdf文件的url

我试图保存的链接之一是:https://www.wvmmis.com/WV%20Medicaid%20Provider%20SanctionedExclusion/WV%20Medicaid%20Exclusions%20-%2016年6月20日%2020.pdf

代码有效,但保存的文件已损坏,Acrobat阅读器或任何pdf阅读器都无法打开。

如果你点击上面的链接并保存为,并将页面本地保存为pdf,那么你可以很好地打开它。所以问题不在于pdf真的损坏了,而是WebClient没有正确保存它。

我是否可以对WebClient进行任何配置,使其正确保存文件,或者是否有其他方法可以正确保存文件?

感谢

从带有c#的链接下载pdf

我很久以前写过类似的东西

try
{
    WebRequest request = WebRequest.Create(url);
    WebResponse response = request.GetResponse();
    string originalFileName = response.ResponseUri.AbsolutePath.Substring(response.ResponseUri.AbsolutePath.LastIndexOf("/") + 1);
    Stream streamWithFileBody = response.GetResponseStream();
    using (Stream output = File.OpenWrite(@"C:'MyPath'" + originalFileName))
    {
        streamWithFileBody.CopyTo(output);
    }
    Console.WriteLine("Downloded : " + originalFileName);
}
catch (Exception ex)
{
    Console.WriteLine("Unable to Download : " + ex.ToString());
}

在尝试了我在网上找到的所有示例后,我终于找到了一种方法。我在这里发布我的答案,以防其他人遇到同样的问题。

我使用selenium FireFoxDriver导航到包含链接的页面,然后找到链接并单击它。我在firefox中创建了一个配置文件,直接下载pdf文件类型,而不是打开它。

FirefoxDriver driver = new FirefoxDriver(myProfile);
driver.Navigate().GoToUrl(pageUrl);
driver.FindElement(By.LinkText(linkText)).Click();

你也可以通过href或id找到链接,但在我的情况下,我需要通过文本找到它。