2016-10-12 7 views
0

このコードを初めてテストしたところ、うまく動作していたようですが、今はバグがあります。 MVCでPDF文書を読み込めません

は、私は私の管理機能を経由してPDFファイルをアップロード

PDFドキュメントの読み込みに失敗しました、それがデータベースに入り、その後、私はそれがクリックされたとき、人はそのPDFファイルをダウンロードすることができます私のコントローラ内のアクションを持っています。

しかし、それは常に動作していないようです。また、何が壊れているのかを本当に特定することができませんでした。ファイルサイズが78 kbを超えると、Firefox/Edgeが開いている間にChromeがドキュメントを開くことができないようです。ファイルが75 kb未満の場合は、Chrome/IEで正常に開きます。なぜこれが起こっているのか分かりません。

私はここで

public ActionResult DownloadPdf(int Id) { 
    var dbTest = _testRepository.FindId(Id); 
    var cd = new System.Net.Mime.ContentDisposition { FileName = dbTest.PdfName, Inline = true }; 
    Response.AddHeader("Content-Disposition", cd.ToString()); 
    return File(dbTest.PdfData, "application/pdf"); 
} 

以下の私のコントローラは、私の見る

@if (Model.Test.HasPdf) 
    { 
     <a data-bind="css: { disabled: !form() }" href="@Url.Action("DownloadPdf", "Test", new { Id = Model.Test.Id })" target="_blank" id="launchBtn" class="btn btn-pdf">Download PDF Form</a> 
} 

は、誰が今までこのようなエラーがあったで含まれていますか?もしそうなら、それをどうやって修正しましたか?

+0

あなたのデータベースの列タイプは何ですか?また、「PdfData」の.NETタイプは何ですか? – Dai

答えて

0

に役立ちます願っています。それは私のダウンロード機能とは関係がありませんでした。それは私のHTTPPostにありました。

if (vm.FileData != null) 
    { 
     using (var stream = new System.IO.MemoryStream(vm.FileData.ContentLength\\This code between the parenthesis was missing)) 
     { 
      vm.FileData.InputStream.CopyTo(stream); 
      test.FileData = stream.GetBuffer(); 
      test.FileName = vm.FileData.FileName; 
     } 
-1

"dbTest"にPDFコンテンツのプロパティがバイト配列(byte [])としてあるとします。

public ActionResult DownloadPdf(int Id) { 
    var dbTest = _testRepository.FindId(Id); 

    Response.ContentType = "application/pdf"; 
    Response.AppendHeader("Content-Disposition", $"filename={dbTest.PdfName}"); 
    Response.AppendHeader("Content-Length", dbTest.PdfData.Length.ToString(CultureInfo.InvariantCulture)); 
    Response.BinaryWrite(dbTest.PdfData); 
    Response.End(); 

    return null; 
} 

または新しいブラウザタブで

public ActionResult DownloadPdf(int Id) { 
    var dbTest = _testRepository.FindId(Id); 
    return File(dbTest.PdfData, "application/pdf", dbTest.PdfName); 
} 

をファイルを開くには、ファイルをダウンロードし指示する

私は、これは、私はそれを考え出したあなたに

関連する問題