从虚拟目录下载文件
本文关键字:下载 文件 虚拟 | 更新日期: 2023-09-27 18:13:47
我在这里做错了什么,但无法解决。我有一个虚拟目录,里面有一个文件,我想下载这个文件。
我的代码:
public ActionResult DownloadFile()
{
string FileName = Request.Params["IMS_FILE_NAME"];
string FullFileLogicalPath = Path.Combine(ConfigurationManager.AppSettings["VIRTUAL_DIR_PATH"], FileName);
string FullfilePhysicalPath = Path.Combine(ConfigurationManager.AppSettings["PHYSICAL_DIR_PATH"], FileName);
if (System.IO.File.Exists(FullfilePhysicalPath))
{
return File( FullFileLogicalPath , "Application/pdf", DateTime.Now.ToLongTimeString());
}
else
{
return Json(new { Success = "false" });
}
}
我得到一个错误:
http://localhost/Images/PDF/150763-3.PDF不是有效的虚拟路径。
如果我在浏览器中发布此URL http:/localhost/Images/PDF/150763-3.pdf
,则会打开该文件。如何下载此文件?
平台MVC 4,IIS 8。
它应该是http://localhost/Images/PDF/150763-3.pdf
(而不是http://(
Chrome会将http://更改为http://,但您的程序不会。
我想我误解了你的问题。
尝试(从评论中修复(
return File(FullfilePhysicalPath, "Application/pdf", DateTime.Now.ToLongTimeString()+".pdf");
如果您想使用格式为"{controller}/{action}/{id}"的路由url:
MVC 4中定义了类RouteConfig ~/App_Start/RouteConfig.cs您有ImageController和PDF操作,150763-3.PDF是参数id。
http://localhost/Images/PDF/150763-3.pdf
解决方案很简单:
public class ImagesController : Controller
{
[ActionName("PDF")]
public ActionResult DownloadFile(string id)
{
if (id == null)
return new HttpNotFoundResult();
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
string FileName = id;
string FullFileLogicalPath = Path.Combine(ConfigurationManager.AppSettings["VIRTUAL_DIR_PATH"], FileName);
string FullfilePhysicalPath = Path.Combine(ConfigurationManager.AppSettings["PHYSICAL_DIR_PATH"], FileName);
if (System.IO.File.Exists(FullfilePhysicalPath))
{
return File(FullFileLogicalPath, "Application/pdf", FileName);
}
else
{
return Json(new { Success = "false" });
}
}
}