我試圖顯示一個成功的AJAX調用後,我的控制器的PDF。我需要修改原來的方式,以便能夠處理多個PDF以返回單個PDF。AJAX調用控制器後顯示PDF
老辦法:
var uri = '../api/Controller/' + string1 + "," + string2 + "," + string3;
var src = '../web/printViewer.html?file=' + encodeURIComponent(uri);
window.open(src, "_blank");
所以我一直試圖保持的該功能與AJAX調用,看起來像這樣:
$.ajax({
type: 'get',
url: '../api/Controller',
contentType: 'application/json; charset=utf-8',
data: { thing1: item, thing2: item2 },
datatype: 'json',
success: function (result) {
// no bueno D:
// but I get back a proper PDF every time
},
error: function() {
toastr.error('Error creating print.');
}
});
和C#的控制器:
[HttpGet]
public HttpResponseMessage Get(string thing1, string thing2) //thing2 will be a string[] eventually, once I am able to get 2-3 pdfs working
{
byte[] data = response.PDFBytes[0] == null ? new byte[0] : response.PDFBytes[0];
int length = response.PDFBytes[0] == null ? 0 : response.PDFBytes[0].Length;
var stream = new MemoryStream(data, 0, length, true, true);
result.Content = new ByteArrayContent(stream.GetBuffer());
result.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
{
FileName = "CheckedOutItems.pdf"
};
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
}
我試圖做的第一件事就是把整個事情變成一個大字符串,但它是開始只有幾個PDF文件太長了。我知道控制器正在返回一個可靠的PDF,但我似乎無法將其顯示在printViewer窗口中。
在此先感謝!
編輯:
我不是試圖下載文件。我只是希望在新窗口中打開它,以便用戶可以打印它。有人在開發人員嘗試下載PDF時現在曾兩次提出過相同的文章。那不是我所追求的。
你想下載或顯示它?什麼是printViewer窗口? –
@teovankot我想展示它。 PrintViewer只是一個不同的窗口,可自動爲用戶提供打印對話框。 –
那麼我只能說不要用AJAX下載文件。這真的很棘手,所以最好用舊的方式。欲瞭解更多信息[檢查此](https://stackoverflow.com/q/4545311/1849444)。 –