我正在使用MVC在View中显示PDF内容,但它无法正确呈现。
控制器操作:
[HttpPost]
public ActionResult GetDocumentContent()
{
byte[] result;
result = System.IO.File.ReadAllBytes(@"C:\test.pdf");
Response.AppendHeader("Content-Disposition", new System.Net.Mime.ContentDisposition
{
FileName = "document.pdf",
Inline = true,
}.ToString());
return File(result, "application/pdf");
}
Jquery的:
var url = "/DocumentContent/GetDocumentContent";
var self = this;
$.post(url, null,function (data) {
debugger;
var obj = $('<object type="application/pdf" width="100%" height="100%" border="2"></object>');
obj.attr('data', data);
$('#divContainer').append(obj);
});
此代码中的错误是什么?如何在View中显示PDF流?
答案 0 :(得分:0)
数据属性是网址,而不是实际数据 另请注意,您收到的数据是文本,因为$ .post还不能返回二进制结果 一种解决方案是将请求类型更改为GET(因为您没有发布任何数据),只需将url放在对象的数据属性中
var url = "/DocumentContent/GetDocumentContent";
var obj = $('<object type="application/pdf" width="100%" height="100%" border="2" data="'+url+'"></object>');
$('#divContainer').append(obj);
EDIT
你可以但是你必须使用XHR2来使用裸XMLHttpRequest,比如。
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200){
var URL = window.URL || window.webkitURL;
var blobUrl = URL.createObjectURL(this.response);
var obj = $('<object type="application/pdf" width="100%" height="100%" border="2" data="'+blobUrl+'"></object>');
$('#divContainer').append(obj);
}
}
xhr.open('POST', "/DocumentContent/GetDocumentContent");
xhr.responseType = 'blob';
xhr.send('parameter='+encodeURIComponent(some_data));