【问题标题】:Upload and store many images a to database and create thumbnails at once using ASP.Net MVC使用 ASP.Net MVC 一次将许多图像上传并存储到数据库并创建缩略图
【发布时间】:2012-10-27 18:10:05
【问题描述】:

如何一次上传许多图像(通过打开对话框和 shift/ctrl)并将它们存储到 sql server 数据库(为每个图像创建一条记录),然后使用 ASP.Net MVC 创建缩略图?

视图和控制器应该如何?非常感谢。

【问题讨论】:

    标签: asp.net-mvc image-upload


    【解决方案1】:

    从你的问题看来,你的想法太过分了。您正在同时提出有关 ASP.NET MVC、图像处理算法、SQL 服务器和一般网页设计的问题。

    为避免深入了解您的问题,我将简单解释您需要做什么。您将需要自己为此进行研究,因为没有多少 S.O.问题和答案将为您提供适当的技术知识。

    您首先需要有一个可以存储图像的数据库。这是一个小教程http://www.codeproject.com/Articles/354639/Storing-and-Retrieving-Images-from-SQL-Server-Usin

    这可能需要你一段时间。但是一旦你完成了,你将需要进入你的项目并开始研究基本架构。你的对象会是什么样子?你的程序的流程是什么?您需要问的一个大问题是您将如何连接到您的数据库?答案可能应该是实体框架。您需要考虑使用 EF 将数据从服务器端代码传输到数据库。

    就您的视图和控制器而言,控制器是应用程序中所有计算和处理的地方,而视图几乎就像显示计算数据的模板。您需要确定要来回传递的数据。一般来说,鉴于您提供的信息量很少,视图看起来几乎就像您希望它看起来的样子,并且控制器必须获取从视图传递的图像,将其转换为缩略图,然后传递它(使用 EF)返回到您的数据库。

    很多工作,嗯? ;)

    【讨论】:

    【解决方案2】:

    你必须创建 2 个类:MainClass 和 MainClassViewModel

    主类具有带有标签名的图像的属性,例如:

    public class MainClass
    {
     [Key]
     public int MainClassId {get; set;}
     [DisplayName("Image 1")]
     public Bytes[] Image1 {get;set;}
    }
    

    然后你将需要一个 ModelView(它是一种类似于原始的类方式,只需将“Bytes[]”的类型更改为“HttpPostedFileBase”:

      public class MainClassModelView
    {
     [Key]
     public int MainClassId {get; set;}
     [DisplayName("Image 1")]
     public HttpPostedFileBase Image1 {get;set;}
    }
    

    在你看来,你必须在第一行使用这个 ModelView:

     @model ApplicationName.Models.MainClassModelView
    

    那么你必须使用视图:

     @using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
      @Html.AntiForgeryToken()
      <div class="form-horizontal">
         <h4>MainClassView</h4>
         <hr />
           @Html.Images(m => m.Image1)
           @Html.ValidationMessageFor(model => model.Image1, "", new { @class = "text-danger" })
        </div>
    </div>
    
       <div class="form-group">
          <div class="col-md-offset-2 col-md-10">
              <input type="submit" value="Create" class="btn btn-default" />
          </div>
      </div>
    </div>
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-02
      • 2016-10-12
      • 2015-02-19
      • 2011-09-03
      • 2021-09-16
      • 2017-11-11
      • 2018-09-25
      • 2017-01-04
      相关资源
      最近更新 更多