使用mvc3将图像保存到文件系统

时间:2012-06-08 10:03:53

标签: c# asp.net-mvc-3 image

我有一些简单的实体,现在需要有一个个人资料图片。这样做的正确方法是什么?因此,它是1对1关系,一个图像仅与一个实体相关,反之亦然。该图像应通过webform与插入相关实体一起上传。

因此,我指出使用文件系统来存储图像并仅将路径图像保存到db中我不得不问是否有人提供任何教程或链接或代码示例。

由于

4 个答案:

答案 0 :(得分:3)

使用图像创建实体应该采取的步骤。

  1. 使用图片上传创建asp表单并收集实体数据。理想情况下,如果你分两步完成,那就是第一个图片上传。
  2. 提交帖子图片(可能您必须为大图片配置内容)和实体数据
  3. 检查后端的图像。如果可以,请存放在一个文件夹中。
  4. 如果图像正常,请在DB中创建实体。实体图像路径应根据步骤3中的数据进行更新。
  5. 一些建议:

    • 防守守则。
    • 上传图像时检查图像是否有效(甚至对图像标题进行二元检查)
    • 等到图片上传并检查以创建实体。
    • 在INSERT新实体的情况下,不允许覆盖现有图像。
    • 将图像命名为主键(1.jpg,2.jpg)
    • 在加载图像时,不要假设图像会在那里。
    • 不允许(如果可能)手动与图像交互(无需在机器中进行远程处理以及将图像从一个地方复制到另一个地方)。手动交互可能会导致不一致。

答案 1 :(得分:3)

我使用Entity Framework将IMAGE源本身保存到数据库,并且我确保我在数据库中包含以下内容:

  • 创建日期
  • 文件类型(内容类型)
  • 来源(二进制)
  • 文件名
  • 文件大小
  • 高度
  • 宽度

我使用字节流/ BinaryReaders加载它。我的代码在这里:

http://garfbradazweb.wordpress.com/2011/08/16/mvc-3-upload-sql-server-entity-framework/

完整的教程系列如下: http://garfbradazweb.wordpress.com/welcome-to-my-ancedotes/#

就人际关系而言,我有以下几点:

媒体表 - 存储所有图片并包含上述列。您可能需要与其他表格相关的图像。关键是一个单一的(SQL),C#Type是Guid。

个人资料表 - 存储我的用户个人资料。这里我有一个ImageId,它是Profile行和Image之间的一对一关系。

我写过一个MVCImage应用程序,它会告诉你如何在这里使用它:

http://mvcimage.codeplex.com/ 如果可以,或者您需要代码示例,请告诉我。

答案 2 :(得分:1)

对于单个图像,我只是将其直接存储在表格中。您将不会膨胀数据库,因为您将图像大小调整为可接受的大小(即128x128像素)。

此外,无需担心文件系统备份和多个Web服务器的问题。

答案 3 :(得分:0)

您可以将HTML输入标记与文件类型一起使用:

<input type="file" name="file" />

完整的MVC示例可以在这里找到here