2016-05-25 12 views
-2

Я создал ссылку, загружающую файл PDF. Нажмите на ссылку.Как сделать ссылку для загрузки PDF-файла?

Вот мой .cshtml:

<h1>Hello Shuainan</h1> 
<a href="/Account/PdfDownload">download</a> 


<input type="button" value="Download" onClick="download('test.pdf')" /> 

<script> 
    function download(file) { 
     window.location = file; 
    } 
</script> 

и функция загрузки:

public void PdfDownload(string path, string fileName) 
{ 
     var myPDF = System.IO.File.ReadAllBytes(@"C:\Program Files\wkhtmltopdf\bin\myPDF.pdf"); 

     Response.ContentType = "Application/pdf"; 

     Response.Headers.Add("Content-Disposition", "attachment; filename=testPDF.pdf"); 
     Response.Body.Write(myPDF, 0, 2048); 
} 

Но тогда я не могу загрузить файл PDF когда загрузка завершена.

+2

Не пишите непосредственно в ответ. Верните FileResult. – mason

+0

Вы можете попробовать это. return File (имя файла, «application/pdf», Server.UrlEncode (имя файла)); – riteshmeher

+0

return File (myPDF, «application/pdf», Server.UrlEncode (myPDF)); @riteshmeher. Я не знаю, почему сервер не существует в текущем контексте. – Zsn

ответ

0

Создать метод действий, которые возвращают файл результата действия как

public ActionResult PdfDownload() 
    { 
     string TempFilePath = @"C:\Program Files\wkhtmltopdf\bin\myPDF.pdf"; 

     if (System.IO.File.Exists(TempFilePath)) 
     { 
      var cd = new System.Net.Mime.ContentDisposition 
      { 
       FileName = "testPDF.pdf", 
       Inline = false, 
      }; 
      Response.AppendHeader("Content-Disposition", cd.ToString()); 
      return File(TempFilePath, "application/pdf"); 
     } 
     else 
     { 
      return null; 
     } 
    } 

И тогда используется вид как:

<h1>Hello Shuainan</h1> 
<a href="/Account/PdfDownload">download</a> 
+0

Необработанное исключение возникло во время обработки запроса. FileNotFoundException: Не удалось найти файл: Необработанное исключение возникло во время обработки запроса. FileNotFoundException: Не удалось найти файл: C: \ Program Files \ wkhtmltopdf \ bin \ myPDF.pdf \\ ****** Но у меня есть этот файл C: \ Program Files \ wkhtmltopdf \ bin \ myPDF.pdf – Zsn

+0

нормально, я думаю, вам нужно поместить файл в каталог приложения, а затем использовать Server.MapPath(), предположим, что вы помещаете файл в pdffiles/myPDF.pdf, тогда Code будет строкой TempFilePath = Server.MapPath ("/ pdffiles/myPDF.pdf «); –

+0

строка TempFilePath = Server.MapPath ("/ pdffiles/myPDF.pdf"); он показывает ошибку, что имя «сервер» не существует в текущем контексте. Microsoft.AspNet.Server.MapPath? правильно? Я не знаю его проблемы с .net5? – Zsn

Смежные вопросы