在asp mvc 5中,我使用该代码启动下载:
//jQuery
$(document).on('click', "#download_export", function (e) {
window.location = url_download;
});
//c#
public FileResult GetFile()
{
return File(Encoding.UTF8.GetBytes("dfdfdf dfssdfdfs"),
"text/plain",
"test.txt");
}
它可以在客户端浏览器上运行并触发txt文件下载。
我想通过从控制器传递文件内容来做同样的事情,
我试过了:
$(document).on('click', "#download_export", function (e) {
$.get(url_download,
{
content : 'this is my content'
}
, function (data) {
console.log('works')
});
});
public FileResult GetFile(string content)
{
return File(Encoding.UTF8.GetBytes(content),
"text/plain",
"test.txt");
}
我看到调试器已达到Action但它没有触发下载,
你知道怎么做吗?
答案 0 :(得分:1)
我担心你无法用ajax下载文件。 由于安全原因,javascript不允许访问本地文件系统。想象一下,远程站点的js试图窃取你电脑上的文件。
尝试:
$(document).on('click', "#download_export", function (e) {
window.location = url_download + "?content=this is my content";
});
或者您可以在页面上创建隐藏的iframe以下载文件,以避免更改当前窗口的位置。
$(document).on('click', "#download_export", function (e) {
$("#yourIframe").attr("src",url_download + "?content=this is my content");
});
答案 1 :(得分:0)
如果您想要dynamic download
,那么您可以使用 - > $ .filedownload jquery插件用于这些目的。简单用法:
var promise = $.fileDownload(url_download+"?content=yourContentHere");