Код для загрузки файла 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();