2016-07-28 12 views
0

鏈接我有一個需要從不同的公共網站上下載的PDF文件,並保存到本地的文件夾中的服務器下載中心從C#

我試圖用System.Net在Windows服務應用程序的PDF文件。 WebClient執行這樣的下載

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

目標是完整的路徑和文件夾的名稱,我需要將文件保存到。例如:\服務器名\下載\ file123.pdf

fileLink是URL PDF文件

一個我想保存的鏈接是:https://www.wvmmis.com/WV%20Medicaid%20Provider%20SanctionedExclusion/WV%20Medicaid%20Exclusions%20-%20June%202016.pdf

代碼工作,但該文件保存的內容已損壞,無法通過Acrobat Reader或任何PDF閱讀器打開。

如果您點擊上面的鏈接並保存並將本地頁面保存爲pdf,那麼您可以打開它。所以問題不在於pdf真的被損壞,而是WebClient不能正確保存。

對WebClient有沒有任何配置可以使它正確保存文件,還是有另一種方法可以保存它嗎?

謝謝

+0

看看這個:http://stackoverflow.com/questions/18712224/download-save-locally-and-display-pdf-from-a-link希望它有幫助 –

+0

在十六進制編輯器中打開文件。它是什麼樣子的? Web服務器可能不喜歡你的用戶代理,而是給你一些html頁面。 –

回答

0

我寫了類似的東西很久以前

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()); 
} 
+0

我試過你的代碼使用WebRequest/WebResponse但我仍然無法打開該文件。仍然說它已損壞。 – user3547425

0

嘗試,我發現網上沒有運氣的所有例子中,我終於想出了一個辦法做到這一點。我在這裏發佈我的答案,以防其他人遇到同樣的問題。

我用硒FireFoxDriver導航到包含鏈接的頁面,然後找到鏈接並單擊它。我在Firefox中創建了一個配置文件,直接下載文件類型pdf,而不是打開它。

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

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