通过onclick在Ext.Ajax.request上下载文件

时间:2014-07-21 16:27:09

标签: c# ajax extjs

我正在尝试通过单击带有onClick事件的href链接来下载文件:

<a href="#download" onClick="downloadFile('@(elem.Attachment)')">@(elem.Attachment.Split('/').Last())</a>

在elem.Attachment中,有我试图下载的文件的完整路径。

在Controller中下载文件的我的C#方法如下:

public FileResult DownloadFile(string path)
    {
        return File(path, System.Net.Mime.MediaTypeNames.Application.Octet, Path.GetFileName(path));
    }

我使用的最后一个方法是javascript函数“downloadFile”:

function downloadFile(path){
        Ext.Ajax.request({
            url: '/Home/DownloadFile',
            type: "post",
            params: { path: path },
            success: function (response, opts) {

            },
            failure: function (response, opts) {
                alert('server-side failure with status code ' + response.status);
            }
        });
    }

我调试了程序,它调用了我的控制器的“DownloadFile”方法,传递了正确的路径。

如何使用Ajax请求从Controller下载返回的FileResult?

3 个答案:

答案 0 :(得分:0)

假设静态内容,您不是简单的答案。用户必须被引导到浏览器的URL以执行某些操作,否则它只是保存在内存中。

在成功功能中,你可以这样做:

 window.location.assign(path);

window.location.assign

答案 1 :(得分:0)

您无法通过ajax下载文件。你可以在新窗口或blob对象中下载文件,我认为也可以使用iframe,但是使用ajax是不可能的。

答案 2 :(得分:0)

感谢您的回答。 我现在通过使用ext.net组件&#34; linkBut​​ton&#34;来修复它,我可以让DirectEvent调用控制器的方法。 工作良好。问候。