Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 4 在MVC4文件中上载其保存“;System.Web.HttpPostedFileWrapper;在数据库中而不是文件名中_Asp.net Mvc 4_C# 4.0_File Upload - Fatal编程技术网

Asp.net mvc 4 在MVC4文件中上载其保存“;System.Web.HttpPostedFileWrapper;在数据库中而不是文件名中

Asp.net mvc 4 在MVC4文件中上载其保存“;System.Web.HttpPostedFileWrapper;在数据库中而不是文件名中,asp.net-mvc-4,c#-4.0,file-upload,Asp.net Mvc 4,C# 4.0,File Upload,我正在尝试使用MVC4进行文件上传,但它的保存对象名“System.Web.HttpPostedFileWrapper”在DB中,而不是文件名,即“Songs.MP3”,并且文件不会传输到给定位置 模型 看法 { 文件在~/Images/Files位置不可用。这里几乎没有问题。第一个问题是命名约定。您的文件上载模型将属性FileUploadLocation作为字符串,并且在控制器的创建方法中,您正在传递FileUpload FileUpload模型和HttpPostedFileBase Fil

我正在尝试使用MVC4进行文件上传,但它的保存对象名“System.Web.HttpPostedFileWrapper”在DB中,而不是文件名,即“Songs.MP3”,并且文件不会传输到给定位置

模型

看法

{



文件在~/Images/Files位置不可用。

这里几乎没有问题。第一个问题是命名约定。您的文件上载模型将属性
FileUploadLocation
作为字符串,并且在控制器的创建方法中,您正在传递
FileUpload FileUpload
模型和
HttpPostedFileBase FileUploadLocation

另一个更重要的问题是,您不应该将视图模型保存到数据库中,它应该映射到某种域对象,而域对象又会被保存。例如:

创建新视图模型:

public class FileUploadViewModel
{
    public int FileUploadID { get; set; }
    public int AlbumID { get; set; }
    public string FileType { get; set; }
    public HttpPostedFileBase FileUploadFile { get; set; }

    public virtual Albums Albums { get; set; }
}
从域模型中删除虚拟方法:

public class FileUpload
{
    [Key]
    public int FileUploadID { get; set; }
    public int AlbumID { get; set; }
    public string FileType { get; set; }
    public string FileUploadLocation { get; set; }
}
然后,控制器创建方法应如下所示:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(FileUploadViewModel model)
{
    if (ModelState.IsValid)
    {
         var fileName = Path.GetFileName(model.FileUploadFile.FileName);
         var path = Path.Combine(Server.MapPath("~/Images/Files"), fileName);
         model.FileUploadFile.SaveAs(path);

         db.FileUploads.Add(new FileUpload
         {
             FileUploadID = model.FileUploadID,
             AlbumID = model.AlbumID,
             FileType = model.FileType,
             FileUploadLocation = path
         });
         db.SaveChanges();
         return RedirectToAction("Index");
    }

        ViewBag.AlbumID = new SelectList(db.Albumss, "AlbumID", "AlbumTitle", model.AlbumID);
        return View(model);
    }
        //
    // POST: /FileUpload/Create

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(FileUpload fileupload, HttpPostedFileBase FileUploadLocation)
    {
        if (ModelState.IsValid)
        {
            var fileName = Path.GetFileName(FileUploadLocation.FileName);
            var path = Path.Combine(Server.MapPath("~/Images/Files"), fileName);
            FileUploadLocation.SaveAs(path);

            db.FileUploads.Add(fileupload);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.AlbumID = new SelectList(db.Albumss, "AlbumID", "AlbumTitle", fileupload.AlbumID);
        return View(fileupload);
    }
public class FileUploadViewModel
{
    public int FileUploadID { get; set; }
    public int AlbumID { get; set; }
    public string FileType { get; set; }
    public HttpPostedFileBase FileUploadFile { get; set; }

    public virtual Albums Albums { get; set; }
}
public class FileUpload
{
    [Key]
    public int FileUploadID { get; set; }
    public int AlbumID { get; set; }
    public string FileType { get; set; }
    public string FileUploadLocation { get; set; }
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(FileUploadViewModel model)
{
    if (ModelState.IsValid)
    {
         var fileName = Path.GetFileName(model.FileUploadFile.FileName);
         var path = Path.Combine(Server.MapPath("~/Images/Files"), fileName);
         model.FileUploadFile.SaveAs(path);

         db.FileUploads.Add(new FileUpload
         {
             FileUploadID = model.FileUploadID,
             AlbumID = model.AlbumID,
             FileType = model.FileType,
             FileUploadLocation = path
         });
         db.SaveChanges();
         return RedirectToAction("Index");
    }

        ViewBag.AlbumID = new SelectList(db.Albumss, "AlbumID", "AlbumTitle", model.AlbumID);
        return View(model);
    }