我在数据库中有一个pdf文件,我在控制器中加载并直接想通过返回文件返回
return File(document.Data, document.ContentType);
数据是带有~76000字节的bytearray ContentType是application / pdf
当我想在webbrowser(FF或Chrome)中查看结果时,我会看到pdf代码而不是pdf。
%PDF-1.4 %���� 1 0 obj <>stream x��� and so on
感谢任何帮助,因为它必须如此简单,但我无法找到它。
返回位于ActionResult索引中,我需要在页面上单击时加载它(没有带有_blank的新页面)
这是正确的数据,因为当我在chrome中使用f12并点击网络时,我会将数据作为一个整体来查看pdf
EDIT1:
[HttpGet]
public ActionResult Index(int Id)
{
InitMvcApplicationMenu();
...
var document = WebApi.LoadDocument(DocumentGuid.Value);
var byteArray = document.Data;
if (byteArray == null)
{
return null;
}
Stream stream = new MemoryStream(byteArray);
if (document == null)
{
return View("NoDocument");
}
Response.AppendHeader("content-disposition", "inline; filename=file.pdf");
return File(stream, document.ContentType, "document.pdf");
}
这样我收到错误没有找到文件。当我以前用
的方式使用它时return File(document.Data, document.ContentType);
我将bytearray视为视图而不是pdf,但找到了文件
编辑2:
public ActionResult Index(int Id)
{
InitMvcApplicationMenu();
var entity = WebApi.LoadItem(Id);
var DocumentGuid = entity.ReportDocumentGUID;
if (DocumentGuid == Guid.Empty)
{
return View("NoDocument");
}
var document = WebApi.LoadItem(DocumentGuid.Value);
if (document == null)
{
return View("NoStatusReportDocument");
}
var cd = new ContentDisposition
{
FileName = document.Name,
Inline = true
};
Response.Headers.Add("Content-Disposition", cd.ToString());
return File(document.Data, document.ContentType);
}
我有一个包含多个registertab的包装器,并希望在选择文档选项卡时在选项卡中显示pdf。
这发生在这里:
my.onHashChanged = function (e) {
var feature = jHash.val('feature');
my.loadTab(feature);
}
my.loadTab = function (feature) {
if (feature) {
$("#tabstrip-content").html("Loading...");
applicationUIModule.loadPartialView(feature, "Index", { Id: $("#Id").val()}
, function (data) {
}
, null
, $("#tabstrip-content")
);
}
}
my.onTabSelect = function (e) {
var feature = $(e.item).data("feature");
applicationUIModule.updateHash("feature", feature);
}
答案 0 :(得分:0)
这就是你要做的事情:
[HttpGet]
public IActionResult document(int id)
{
var byteArray = db.instances.Where(c => c.id == id).FirstOrDefault().document;
if (byteArray == null)
{
return null;
}
Stream stream = new MemoryStream(byteArray);
Response.AppendHeader("content-disposition", "inline; filename=file.pdf");
return File(stream, "application/pdf", "document.pdf");
}