从MVC下载提示

时间:2011-03-28 13:11:08

标签: jquery asp.net-mvc

在我的mvc应用程序中,我使用jquery使用ajax post。示例如下所示

  var postData = { recordID: selectedRecord };
            $.ajax({
                type: "POST",
                data: postData,
                url: '<%= Url.Action("LoadAudioPlayer", "Search") %>',
                success: function (result) { alert(result); },
                error: function (result) { alert('error'); }
            });

在制作.wav文件的虚拟路径的操作中。如何向用户下载提示 我的行动如下所示

  public string LoadAudioPlayer(string recordID,SearchModels searchModel)
    {
        //doing some operations
         path=getPath(); \\getting virtual path of the file

        return path;
    }

我可以看到路径导致我发出警报。我想提示用户是否要下载文件。我如何用jquery处理它?<​​/ p>

3 个答案:

答案 0 :(得分:2)

您必须在成功功能中添加一个新窗口(弹出窗口),并将路径作为位置。这将从客户端浏览器查询存储在服务器上的文件,并询问客户端是否需要下载它。

var postData = { recordID: selectedRecord };
            $.ajax({
                type: "POST",
                data: postData,
                url: '<%= Url.Action("LoadAudioPlayer", "Search") %>',
                success: function (result) { window.open(result,'',''); },
                error: function (result) { alert('error'); }
            });

答案 1 :(得分:2)

我认为this article解释了类似于你想要做的事情。

答案 2 :(得分:2)

而不是做这个ajax查询,这似乎是不必要的,你可以写:

window.location = '<%= Url.Action("LoadAudioPlayer", "Search") %>/' + recordID;

并且可以将Action方法更改为此方法来处理不存在的文件

public string LoadAudioPlayer(string recordID, SearchModels searchModel)
{
    //doing some operations
    var path = getPath(); //getting virtual path of the file

    if (System.IO.File.Exists(path))
    {
        var fileName=getFileName();

        ControllerContext.HttpContext.Response.AddHeader("content-disposition",
            "attachment; filename=" + fileName)

        return File(path, contentType);
    }

    return new EmptyResult();   
}