我有这个动作在这里执行下载:
[HttpGet]
public void Download(string FileName)
{
string FilePath = System.AppDomain.CurrentDomain.BaseDirectory + "Exe\\";
System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "video/mp4";
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ");
response.TransmitFile(FilePath + FileName);
response.Flush();
response.End();
}
在我的一个观点中,我对这个动作进行了 ajax 调用,如下所示: var options = { url: 'Home/Download?filename=' + file.Name + file.Extension, method: 'GET' };
$.ajax(options)
.done(function () {
console.log('You successfully downloaded ' + file.Name);
})
.fail(function () {
console.log('Something bad happened');
});
当我构建我的项目并导航到 /home/download?id=filename 时,一切正常:chrome 开始下载。但是当我使用上面的 ajax 调用调用done
回调时,下载成功,但我在浏览器(chrome)的任何地方都看不到下载,它也没有问我把这个文件放在哪里。首先,这个文件到底去哪儿了?为什么当我使用 ajax 调用时它的行为不同?
感谢您的帮助。
PS:从“获取”更改为“发布”不会导致不同的结果。