Как открыть файл содержимого без подсказки в любом браузере
У меня есть filecontentresult от метода действия контроллера, как показано, содержимое имеет тип byte[]
FileContentResult file= new FileContentResult(contents, "/PDF");
Response.AppendHeader("Content-Disposition", "inline; filename=" + filename);
return file;
Теперь, если тип файла известен как pdf и указан, почему он не открывается напрямую в Adobe Reader и не вызывает окно для открытия с / saveas. Если мой filecontentresult проходит pdf, я хочу, чтобы он открывался без окна propmt. как это можно сделать? Также приведенный выше код только подсказывает окно в Mozilla, в IE нет подсказки или открытия.
2 ответа
Хитрость заключается в типе контента, вы задали его. Если браузер знает, как обрабатывать этот тип контента, он откроет его:
public ActionResult GetPDF()
{
var path = @"C:\Test\Testing.pdf";
var contents = System.IO.File.ReadAllBytes(path);
return File(contents, "application/pdf");
}
Ответ в одну строку.
вернуть новый FileContentResult(documentModel.DocumentData, documentModel.DocumentMediaType);
И, чтобы поместить это в контекст здесь, DocumentSave...
private bool SaveDocument(DwellingDocumentModel doc, HttpPostedFileBase files)
{
if (Request.Files[0] != null)
{
byte[] fileData = new byte[Request.Files[0].InputStream.Length];
Request.Files[0].InputStream.Read(fileData, 0, Convert.ToInt32(Request.Files[0].InputStream.Length));
doc.DocumentData = fileData;
doc.DocumentMediaType = Request.Files[0].ContentType;
}
if (doc.Save())
{
return true;
}
return false;
}