2010-05-26 6 views
12

Comment puis-je télécharger un fichier PDF et le stocker sur le disque en utilisant vb.NET ou C#?Télécharger le fichier pdf par programme

L'URL (du fichier PDF) est en cours de rediection avant que le PDF final ne soit atteint.

J'ai essayé le ci-dessous, mais le PDF semble corrompue lorsque je tente d'ouvrir localement,

Dim PdfFile As FileStream = File.OpenWrite(saveTo) 
Dim PdfStream As MemoryStream = GetFileStream(pdfURL) 
PdfStream.WriteTo(PdfFile) 
PdfStream.Flush() 
PdfStream.Close() 
PdfFile.Flush() 
PdfFile.Close() 
+0

Pouvez-vous montrer la fonction GetFileStream() ainsi? –

+0

Inutile d'appeler Flush() si vous appelez Close(). –

+0

Le pdf est-il corrompu? Le code que j'ai posté fonctionne pour l'IRS fourni pdf. Une autre configuration que je peux penser est d'utiliser la méthode WebClients DownloadData et d'écrire l'octet [] sur le disque alors. – Pat

Répondre

15

Vous pouvez essayer d'utiliser la classe WebClient (System.Net espace de noms) pour ce faire qui évitera tout travail de flux de votre côté.

Le code C# suivant attrape un formulaire IRS et l'enregistre dans C: \ Temp.pdf.

using(WebClient client = new WebClient()) 
{ 
    client.DownloadFile("http://www.irs.gov/pub/irs-pdf/fw4.pdf", @"C:\Temp.pdf"); 
} 
+2

Essayé que, l'ouverture pdf je reçois .... "Adobe Reader n'a pas pu ouvrir le fichier parce que ce n'est pas un type de fichier pris en charge ou parce que le fichier a été endommagé bla bla" – Perplexed

+0

Fonction GetFileStream: Fonction protégée GetFileStream (ByVal URL As String) comme MemoryStream Dim _url As String = URL Dim _wb comme WebClient = New WebClient Dim MonBuffer() As Byte Dim _str comme MemoryStream = Nothing Essayez MonBuffer = _wb.DownloadData (_url) _str = New MemoryStream (MonBuffer) Catch ex As Exception _str = Nothing End Try Retour _str End Function – Perplexed

+0

Cela peut fonctionner. et assurez-vous que vous définissez l'autorisation de sécurité pour IISUSER si vous mettez votre code ur pour la page Web. –

4

Vous pouvez également essayer l'exemple de code ci-dessous pour télécharger des fichiers pdf

Response.ContentType = "Application/pdf"; 
Response.AppendHeader("Content-Disposition", "attachment; filename=Test_PDF.pdf"); 
Response.TransmitFile(Server.MapPath("~/Files/Test_PDF.pdf")); 
Response.End(); 
Questions connexes