0

我有以下操作不返回视图

  public FileResult Download(int? id)
    {
        var files = from p in _db.tbl_Pdfs
                    where p.PaperId == id
                    select p.FileName;

        var archive = Server.MapPath("~/Content/Zip/archive.zip");
        var temp = Server.MapPath("~/Content/Temp");

        // clear any existing archive
        if (System.IO.File.Exists(archive))
        {
            System.IO.File.Delete(archive);
        }
        // empty the temp folder
        Directory.EnumerateFiles(temp).ToList().ForEach(f => System.IO.File.Delete(f));

        // copy the selected files to the temp folder

        foreach (string name in files)
        {
            string sourceFile = System.IO.Path.Combine("~/Content/Pdf", name);
            System.IO.File.Copy(sourceFile, "~/Content/Temp", true);
        }
        // create a new archive
        ZipFile.CreateFromDirectory(temp, archive, CompressionLevel.Fastest, true);



        return File(archive, "application/zip", "archive.zip");
    }

并且还有以下链接用于下载 zip 文件

<a href="~/Home/Download/@ViewBag.id" class="btn">Download zip</a>

我也将其更改为以下链接

   @Html.ActionLink("Download zip", "Download", new { id=@ViewBag.id, @class = "btn" })

 <a href="@Url.Action("download","Home" , new { id=@ViewBag.id})" class="btn"> Download zip</a>

但是还是报错!

无法找到该资源。

说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请查看以下 URL 并确保其拼写正确。

请求的 URL:/Home/Download/7

我应该怎么办?这个错误情况下,动作不返回视图吗?

4

1 回答 1

0

您能更改以下内容并尝试吗

foreach (string name in files)
{
    string sourceFile = Server.MapPath( System.IO.Path.Combine("~/Content/Pdf", name));
    System.IO.File.Copy(sourceFile, Server.MapPath(System.IO.Path.Combine("~/Content/Temp", name)), true);
}
于 2016-05-02T05:48:36.963 回答