2

我有一个带有生成按钮的视图。当我单击它时,我正在Generate使用 ajax 调用导航到控制器的方法。

generate = function () {  
        $.ajax({
            url: "/franchise/Generate",
            type: "POST",
            data: { id: omega.franchiseInfo.Id(), imagesPath: omega.franchiseInfo.ImagesPath() },

        });
    }

这是我的Generate方法:

public ActionResult Generate(int id, string imagesPath)
        {
            // some logic here
            var zipFileName = @"D:\FranchiseGeneration\MyZipFile.zip";
            using (var zip = new ZipFile())
            {
                zip.AddDirectory(@"D:\FranchiseGeneration\Test", "Generation");
                zip.Save(zipFileName);
            }
            return File(zipFileName, "application/zip", "MyZipFile.zip"); 
        }

MyZipFile.zip 按指定在我的硬盘驱动器上创建。我希望用户被提示下载压缩文件......但没有任何反应。我对 Mvc3 很陌生,我不确定我做错了什么。欢迎任何带有代码示例的建议。谢谢你!

4

2 回答 2

1

这是一个 ajax 调用,在 ajax 调用中返回一个文件没有意义...... ajax 代表异步 JavaScript 和 XML.. 可以使用 json 广告和其他一些基于文本的东西,但是要使用二进制文件,你会需要一些额外的作品。在您的情况下,我认为最好的办法(最简单的)是执行正常的回发,而不是 ajax(甚至简单的 GET 也可以)。

于 2012-09-21T14:14:11.353 回答
0

不可能通过这样的 ajax 请求触发文件下载。

不过,还有其他方法可以让类似的事情发生。

http://johnculviner.com/post/2012/03/22/Ajax-like-feature-rich-file-downloads-with-jQuery-File-Download.aspx

于 2012-09-21T14:10:56.723 回答