2016-05-29 5 views
1

Ich habe eine Datei-Taste, um nach einer Datei zu suchen. Ich möchte den ausgewählten Pfad nehmen und ihn in einem iframe anzeigen.dynamisch Anzeigen von PDFs in C# MVC mit iframe

<div class="editor-field"> 
      @Html.TextBox("file", "", new { type = "file" }) 
</div> 

Mein aktueller iframe ist:

@Html.AntiForgeryToken() 
    <iframe src="@Url.Action("GetPDF")" ; height="1000" ; width="1000";%>'></iframe> 

Meine aktuelle (statisch) GetPDF Methode ist folgende:

public FileStreamResult GetPDF() 
{ 

     FileStream fs = new FileStream("D:\\Temp.pdf", FileMode.Open, FileAccess.Read); 
     return File(fs, "application/pdf"); 

} 

So könnten Sie mir bitte helfen und mir sagen, wie ich aktualisieren mein Iframe zum Pdf, das ich mit meinem Editor-Feld auswähle?

+0

Was ist es, Sie erreichen wollen? Wo befinden sich die PDFs auf dem Client-Rechner oder auf dem Server? Meine Annahme ist, dass Sie versuchen, eine Vorschau der PDF-Datei vom Client-Rechner anzuzeigen? Wenn dies der Fall ist, wird Ihre Lösung nicht funktionieren, da die "GetPDF" -Aktion versucht, die PDF von der Serverseite zu laden. –

+0

vom Client. – Lukas

Antwort

1

Ich glaube, es ist schon eine Antwort auf Ihre Frage, und es ist wie folgt: Display PDF in iframe

EDIT 1:

[HttpPost] 
    public ActionResult GetPdf(HttpPostedFileBase uploadedPdf) 
    { 
     // user has selected a file 
     if (uploadedPdf!= null && uploadedPdf.ContentLength > 0) 
     { 
      //you have the file stream here *uploadedPdf* 

      return File(fs, "application/pdf"); 
     } 

     return null;  
    } 

Um Asynchron-Datei hochladen erreichen Sie in aussehen können this oder jQueryForm und an die Dateieingabe ein Ereignis anhängen.

EDIT 2: einfache Art und Weise aus dem Strom zu Byte-Array erhalten

using (MemoryStream ms = new MemoryStream()) { 
    file.InputStream.CopyTo(ms); 
    byte[] array = ms.GetBuffer(); 
} 
+0

thx, aber das hilft mir nicht viel, weil ich meinen Weg nicht bekommen kann:

@Html.TextBox("file", "", new { type = "file" })
Lukas