将AJAX响应文件显示到View中

时间:2014-03-26 08:51:03

标签: javascript jquery asp.net-mvc html5

我的jquery AJAX是::

$.ajax({
    type:'POST',
    url:'GetFile',
    date:data,
    success:function(response){
        //How to use the responded file?
    }
})

在服务器端我将File :: ::

返回
public ActionResult GetFile()
{
     ReportDocument rd = new ReportDocument();
     Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);  
     stream.Seek(0, SeekOrigin.Begin);
     return new FileStreamResult(stream, "application/pdf");               
}

在这里,我将从服务器端返回文件,并将其显示在我的视图中。

意思是说,我只想将响应的文件附加到

 <div id="FileContent"></div>

这是我认为的。

我能为此做些什么?

2 个答案:

答案 0 :(得分:0)

您想在div中显示PDF。

尝试一下:

<div id="FileContent">
    <object data="test.pdf" type="application/pdf" width="500" height="800">
    </object>
</div>

在ajax调用成功时使用jquery在#FileContent div中设置<object>的数据属性。

答案 1 :(得分:0)

这里有一个简单的解决方案。 而不是返回文件只需将流写入Response。

byte[] tempArrary = memoryStream.ToArray();
Response.BinaryWrite(tempArrary);
Response.ContentType = "application/pdf";
Response.End(); 

然后只返回一些Json结果而不是File。

为您的DIV添加iframe。

然后使用jquery将iframe的src设置为您的控制器。

$("#your_iframe").attr("src", "your_path");

如果你想使用object或Embed标签而不是iframe,那么你必须为object或embed创建元素并且做同样的事情