如何使用C#在ASP.NET MVC中下载文件?

问题描述:

我正在做一项任务,而我被困在下载部分。我可以上传文件。但是当我在上载后尝试下载同一文件时,出现错误(“拒绝访问”)。如何使用C#在ASP.NET MVC中下载文件?

这是我写的代码:

[HttpGet] 
public FileResult Download (string fileName) 
{ 
    var permissionSet = new PermissionSet(PermissionState.None); 

    var writePermission = new FileIOPermission(FileIOPermissionAccess.Write, @"D:\Assignment\Ment\Ment\Photos"); 
    permissionSet.AddPermission(writePermission); 

    var FileVirtualPath = Server.MapPath("~/Photos/" + fileName); //"~/Photos/" + fileName; 

    return new FilePathResult(@"D:\Assignment\Ment\Ment\Photos", "application/octet-stream"); 
} 
+0

您使用的MapPath然后不要使用用于实际上返回一个文件,而突然将结果返回到一个文件夹。创建permissionSet,不要用于任何事情。 –

+0

你能编辑这段代码吗? –

+0

我改变了这个代码,但仍然不工作 var FileVirtualPath =(“〜/ Photos /”+ fileName); return File(FileVirtualPath,“application/force-download”,Path.GetFileName(FileVirtualPath)); –

你可以做

[HttpGet] 
    public virtual ActionResult Download(string fileName) 
    { 
     //fileName should be like "photo.jpg" 
     string fullPath = Path.Combine(Server.MapPath("~/Photos"),fileName); 
     return File(fullPath, "application/octet-stream", fileName); 
    } 
+0

我将代码更改为此,现在我得到错误.............异常详细信息:System.IO.FileNotFoundException:找不到文件'D:\ Work \ Ment \ Ment \照片\ photo.jpg”。 –

尝试类似的东西:

public FileResult Download(string ImageName) 
{ 
    return File(“<your path>” + ImageName, System.Net.Mime.MediaTypeNames.Application.Octet); 
} 

也可以访问此链接:

ASP.NET MVC Uploading and Downloading Files

Upload and download files using ASP.NET MVC