2012-12-19 6 views
5

Mam operację FileResult, która zwraca plik PDF. Chcę osadzić ten plik PDF w znaczniku obiektu. Kiedy wstawię akcję do atrybutu danych znacznika obiektu, jak poniżej, żaden plik PDF nie jest pobierany ani wyświetlany w przeglądarce Chrome. (Plik PDF jest pokazany Firefox z wtyczką Adobe - Nie dbam o IE.)Wypełnianie atrybutu danych znacznika object w przeglądarce Chrome przy użyciu akcji ASP.NET MVC obsługującej wynik pliku PDF

<object data="@Url.Action("GetPDF", "PDFCreation", new {id= Model.DocumentId})" type="application/pdf"></object> 

To wszystko działa inaczej - znacznik obiektu pracuje z bezpośrednim linkiem do pliku PDF w systemie plików (np , data = "~/Content/test.pdf"), a powyższa Akcja, jeśli jest wklejona na pasku lokalizacji, pobiera plik PDF.

Jakieś myśli? Dziękuję Ci!

+1

Myślę, że jest to problem wtyczki, jeśli spróbuję go w IE9, nic się nie dzieje. Jeśli zrobi to w Chrome, narzeka, że ​​wtyczka do pliku PDF się nie ładuje. Jeśli spróbuję tego w firefoxie, wszystko działa dobrze. – Slicksim

+0

Masz rację - działa w Firefoksie (z wtyczką Adobe), ale nie w Chrome (oczywiście IE jest w tym wszystkim przegraną i używam tylko iframe pdf.js). – Gabe

Odpowiedz

1

Naprawiono go za pośrednictwem tej odpowiedzi: Returning a file to View/Download in ASP.NET MVC

Musiał dołączyć nagłówek zawartości i ustawić wartość "Inline" dyspozycji treści na wartość true.

var doc = ... 
var contentDisposition = new ContentDisposition 
{ 
    FileName = doc.FileName, 
    Inline = true 
}; 

Response.AppendHeader("Content-Disposition", contentDisposition.ToString()); 

return File(doc.Path, MediaTypeNames.Application.Pdf); 
+0

Dziękuję bardzo za pomoc Slicksim! Bardzo doceniane. – Gabe

+1

Dzięki tonie, szukałem przez chwilę, dlaczego plik PDF nie ładuje się w Chrome, ale w IE, zmieniając ten jeden bool go naprawiłem. – bigcakes

3

udało mi się dostać IE do wyświetlania PDF, który został wyrzucony z powrotem za pomocą FileContentResult i następujący znacznik obiektu

<object> 
    <embed src="@Url.Action("GetPDF", "PDFCreation", new {id= Model.DocumentId})" type="application/pdf"></embed> 
</object> 

może warto spróbować

+0

Nadal nie będzie działać w Chrome. (Wierzę, że IE9 ignoruje znacznik obiektu i wraca do tego, co znajduje się wewnątrz znacznika obiektu.) – Gabe

Powiązane problemy