Asp.net mvc 以表单上传图像并在MVC4上显示

Asp.net mvc 以表单上传图像并在MVC4上显示,asp.net-mvc,Asp.net Mvc,存储用户上传的图像并将其显示在我的网站上的最佳方式是什么? 将其作为二进制存储在DB中。那么我应该如何用“img”来显示它呢? 我想我应该以某种方式将其写入目录,然后将其地址作为'img'的'src'属性传递。 我可以将其存储在web服务器的某个位置,将图像的地址存储在数据库中。然后我只需在`src`属性中指定数据库中的地址。 其他方式?! 我认为第二种方式更方便。 还有一个问题 在这两种情况下,我如何以html格式上传这些图像?@Html没有任何类似于@Html.FileFor(…)的内容,我


存储用户上传的图像并将其显示在我的网站上的最佳方式是什么?

  • 将其作为二进制存储在DB中。那么我应该如何用“img”来显示它呢?
    我想我应该以某种方式将其写入目录,然后将其地址作为'img'的'src'属性传递。
  • 我可以将其存储在web服务器的某个位置,将图像的地址存储在数据库中。然后我只需在`src`属性中指定数据库中的地址。
  • 其他方式?! 我认为第二种方式更方便。
    还有一个问题
    在这两种情况下,我如何以html格式上传这些图像?
    @Html
    没有任何类似于
    @Html.FileFor(…)
    的内容,我如何在操作中获取
    的数据?
    我很感激你的建议

    在我看来,第二种方式更方便

    我也这么认为

    在这两种情况下,我如何以html格式上传这些图像

    很简单。与往常一样,在ASP.NET MVC应用程序中,您可以从设计视图模型开始:

    public class MyViewModel
    {
        [Required]
        public HttpPostedFileBase File { get; set; }
    }
    
    然后,您可以拥有一个具有2个操作(一个渲染视图,另一个处理文件上载)的控制器:

    最后,您将拥有一个相应的强类型视图,该视图将获取用于上载文件的表单:

    @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>
    }
    
    @model MyViewModel
    @使用(Html.BeginForm(null,null,FormMethod.Post,new{enctype=“multipart/formdata”}))
    {
    @LabelFor(x=>x.File)
    @Html.TextBoxFor(x=>x.File,新的{type=“File”})
    @Html.ValidationMessageFor(x=>x.File)
    上传
    }
    

    另外,我建议您阅读ASP.NET MVC工作原理中的文件上载说明。

    我设计了DB来存储图像地址,并将图像存储在web服务器中(不过更改它并不困难)。我现在面临的主要问题是获取图像本身的数据。它用于将二进制数据存储为ASCII文本。在大多数RDBMS中对BLOB的支持都很糟糕,所以这是一个很好的选择。在我将该属性添加到EF生成的模型后,发生了一些事情。现在,每当我从DB请求一些东西时,我得到的值不能为null异常。参数:键。在类型定义后使用“?”方法可以为空使用:公共类型?图像{get;set;}
    @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>
    }