我正在从控制器返回FilestreamResult 我同时尝试了jquery和ajax,但无法成功从控制器下载pdf / xlsx文件。
控制器:
var filestream = new FileStream(pdfoutputpath + ".pdf", FileMode.Open);
return new FileStreamResult(filestream, "application/pdf");
使用jquery查看代码:
function downloadpdffile(id) {
$(".popup-overlay, .popup-content").removeClass("active");
var url = "/WorkInstructions/WorkinstructionDownload";
$.get(url, { id: id, fileformat: 2 }, function () {
});
}
使用Ajax:
function downloadpdffile(id) {
$(".popup-overlay, .popup-content").removeClass("active");
$.ajax({
url: "/WorkInstructions/WorkinstructionDownload",
cache: false,
type: "GET",
data: { id: id, fileformat: 2 },
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function () {
}
});
答案 0 :(得分:0)
尝试将其放在您的ajax调用的success
函数中:
success: function(){
window.location = '@Url.Action("WorkinstructionDownload", "WorkInstructions", new { id = id, fileformat = 2})';
}
尽管我不认为ajax在这里没有提供任何价值,除非我遗漏了一些东西。您可以轻松地获取我上面发布的success
函数的内容,并将其完全放在ajax调用之外(并删除ajax调用)。或者,您可以仅执行以下操作并完全删除脚本:
<a href="@Url.Action("WorkinstructionDownload", "WorkInstructions", new { id = id, fileformat = 2 })">Download Form</a>
答案 1 :(得分:0)
如果控制器没有问题,则可以使用window.open函数来完成任务。我在项目中使用了相同的技术。
var downloadURL='@Url.Action("WorkinstructionDownload", "WorkInstructions", new { id = id, fileformat = 2})'
window.open(downloadURL)