Код для загрузки файла PDF в C#

У меня проблема с загрузкой PDF-файлов. тогда как другие файлы загружаются. код:

WebClient client = new WebClient();
client.DownloadFile(remoteFilename, localFilename);

Пожалуйста, помогите мне, если вы знаете

6 ответов

Проверьте этот метод, надеюсь, это поможет

        public static void DownloadFile(HttpResponse response,string fileRelativePath)
    {
        try
        {
            string contentType = "";
            //Get the physical path to the file.
            string FilePath = HttpContext.Current.Server.MapPath(fileRelativePath);

            string fileExt = Path.GetExtension(fileRelativePath).Split('.')[1].ToLower();

            if (fileExt == "pdf")
            {
                //Set the appropriate ContentType.
                contentType = "Application/pdf";
            }

            //Set the appropriate ContentType.
            response.ContentType = contentType;
            response.AppendHeader("content-disposition", "attachment; filename=" + (new FileInfo(fileRelativePath)).Name);

            //Write the file directly to the HTTP content output stream.
            response.WriteFile(FilePath);
            response.End();
        }
        catch
        {
           //To Do
        }
    }

Пожалуйста, попробуйте следующий пример кода, чтобы загрузить файл.pdf.

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

@Syed Mudhasir: это просто линия:)

client.DownloadFileAsync(new Uri(remoteFilename, UriKind.Absolute), localFilename);

Это загрузит файлы PDF.:)

Ни одно из этих решений не помогло мне или не было завершено. Может быть, этот пост был старым, и новые версии.NET сделали его проще? Во всяком случае, следующий небольшой код отлично справился со мной:

  static async Task DownloadFile(string url, string filePath)
  {
     using (var wc = new WebClient())
        await wc.DownloadFileTaskAsync(url, filePath);
  }

А вот как можно вызвать метод:

Task.Run(async () => { await DownloadFile(url, filePath); }).Wait();
    public void DownloadPdf(String downloadLink, String storageLink)
    {
        using (WebClient wc = new WebClient())
        {
            wc.DownloadFile(downloadLink, storageLink);
        }
        Console.Write("Done!");
    }

    static void Main(string[] args)
    {
        Program test = new Program();
        test.DownloadPdf("*PDF file url here*", @"*save location here/filename.pdf*");
        Console.ReadLine();
    }

Убедитесь, что вы добавили: using System.Net;

public void DownloadTeamPhoto(string fileName)
{
  string mimeType = MimeAssistance.GetMimeFromRegistry(fileName);
  Response.ContentType = mimeType;
  Response.AppendHeader("Content-Disposition", "attachment; filename=" + 
  Path.GetFileName(basePath + fileName)); //basePath= @"~/Content/
  Response.WriteFile(basePath + fileName); //basePath= @"~/Content/
  Response.End();

}

public static string GetMimeFromRegistry(string Filename)
{
  string mime = "application/octetstream";
  string ext = System.IO.Path.GetExtension(Filename).ToLower();
  Microsoft.Win32.RegistryKey rk = 
  Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(ext);

  if (rk != null && rk.GetValue("Content Type") != null)
     mime = rk.GetValue("Content Type").ToString();

  return mime;
}

Это сработало для меня:

string strURL = @"http://192.168.1.xxx/" + sDocumento;
WebClient req = new WebClient();
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.Buffer = true;
response.AddHeader("Content-Disposition", "attachment;filename=\"" + sDocumento + "\"");
byte[] data = req.DownloadData(strURL);
response.BinaryWrite(data);
response.End();
Другие вопросы по тегам