Upload Image in form and show it on MVC 4

前端 未结 1 1591
眼角桃花
眼角桃花 2020-12-16 04:46


What is the Best way to store an image uploaded by the user and then show it in my website?

  1. Store it as binary in DB. then how should I show it wi
相关标签:
1条回答
  • 2020-12-16 05:25

    in my opinion the second way is more convenient.

    Yeah in my opinion as well.

    In both case How Can I upload this images in html form?

    Pretty easy. As always in an ASP.NET MVC application you start by designing a view model:

    public class MyViewModel
    {
        [Required]
        public HttpPostedFileBase File { get; set; }
    }
    

    then you could have a controller with 2 actions (one rendering the view and another handling the file upload):

    public class HomeController: Controller
    {
        public ActionResult Index()
        {
            return View(new MyViewModel());
        }
    
        [HttpPost]
        public ActionResult Index(MyViewModel model)
        {
            if (!ModelState.IsValid)
            {
                // the user didn't upload any file =>
                // render the same view again in order to display the error message
                return View(model);
            }
    
            // at this stage the model is valid => 
            // you could handle the file upload here
    
            // let's generate a filename to store the file on the server
            var fileName = Guid.NewGuid().ToString() + Path.GetFileName(file.FileName);
            var path = Path.Combine(Server.MapPath("~/App_Data"), fileName);
            // store the uploaded file on the file system
            file.SaveAs(path);
    
            // TODO: now you could store the path in your database
    
            // and finally return some ActionResult
            // to inform the user that the upload process was successful
            return Content("Thanks for uploading. Your file has been successfully stored on our server");
        }
    }
    

    and finally you will have a corresponding strongly typed view that will contgain the form to upload the file:

    @model MyViewModel
    @using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        <div>
            @Html.LabelFor(x => x.File)
            @Html.TextBoxFor(x => x.File, new { type = "file" })
            @Html.ValidationMessageFor(x => x.File)
        </div>
        <button type="sybmit">Upload</button>
    }
    

    Also I would recommend you reading Phil Haack's blog post that illustrates file uploading in ASP.NET MVC works.

    0 讨论(0)
提交回复
热议问题