Asp.net mvc 如何在MVC4中检索上传的文件
这是我上传文件的控制器代码,它只在数据库中存储标题,实际文件现在存储在文档/文件夹中。我在检索这个上传的文件时遇到了问题,因为我在数据库中只存储了标题。如何检索文件Asp.net mvc 如何在MVC4中检索上传的文件,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,这是我上传文件的控制器代码,它只在数据库中存储标题,实际文件现在存储在文档/文件夹中。我在检索这个上传的文件时遇到了问题,因为我在数据库中只存储了标题。如何检索文件 [AcceptVerbs(HttpVerbs.Post)] public ActionResult UploadFile(string Title) { _Db.Uploads.Add(new Upload() { Title = Title }); _Db.SaveChanges()
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UploadFile(string Title)
{
_Db.Uploads.Add(new Upload() { Title = Title });
_Db.SaveChanges();
int Id = (from a in _Db.Uploads select a.Upload_id).Max();
if(Id>0)
{
if(Request.Files["file"].ContentLength>0)
{
string extension = System.IO.Path.GetExtension(Request.Files["file"].FileName);
string path1 = String.Format("{0}/{1}{2}", Server.MapPath("~/documents/Files"), Id, extension);
if (System.IO.File.Exists(path1))
System.IO.File.Delete(path1);
Request.Files["file"].SaveAs(path1);
}
ViewData["Sucess"] = "success";
}
else
{
ViewData["Success"] = "Upload Failed";
}
return View();
}
因为我只在数据库中存储了标题
看起来您还存储了ID,而不仅仅是标题
保存路径使用此ID
string path1 = String.Format("{0}/{1}", Server.MapPath("~/documents/Files"), Id);
(我现在已经删除了分机)
因此,只需使用要重新加载的文件的ID将文件读回:
[HttpGet]
public ActionResult DownloadFile(int ID)
{
string path1 = String.Format("{0}/{1}", Server.MapPath("~/documents/Files"), ID);
return FilePathResult(path);
}
(otomh,未经测试)
当然,最好的解决方案是将文件名+扩展名(如果路径始终相同,则不需要路径)与标题和ID保持一致
编辑:更多详细信息:
如果当前存储了标题和ID,请将其更改为同时存储文件名路径
path1
。使用此选项检索上传的文件。编辑并格式化问题。您还必须在数据库中存储相对路径抱歉,但实际上不了解我实际上是该字段的新成员,因此请在我编写此返回文件PathResult(路径)时详细解释PLZZZZZZZ;它向我显示了一个错误,即它是类型,但像变量一样使用
[HttpGet]
public ActionResult DownloadFile(int ID)
{
string path1 = String.Format("{0}/{1}", Server.MapPath("~/documents/Files"), ID);
return FilePathResult(path);
}