从带有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进行任何配置,使其正确保存文件,或者是否有其他方法可以正确保存文件?
感谢
我很久以前写过类似的东西
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找到链接,但在我的情况下,我需要通过文本找到它。