如何使用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");
}
答
你可以做
[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);
}
也可以访问此链接:
您使用的MapPath然后不要使用用于实际上返回一个文件,而突然将结果返回到一个文件夹。创建permissionSet,不要用于任何事情。 –
你能编辑这段代码吗? –
我改变了这个代码,但仍然不工作 var FileVirtualPath =(“〜/ Photos /”+ fileName); return File(FileVirtualPath,“application/force-download”,Path.GetFileName(FileVirtualPath)); –