使用 mvc3 将映像保存到文件系统
本文关键字:文件系统 保存 映像 mvc3 使用 | 更新日期: 2023-09-27 18:36:37
我有一些简单的实体,现在需要有一个个人资料图像。正确的方法是什么?因此,它是 1 对 1 的关系,一个图像仅与一个实体相关,反之亦然。此图像应通过网络表单上传,并插入相关实体。
因此,当我被指出使用文件系统来存储图像并将仅路径图像持久化到数据库中时,我必须询问是否有人有任何教程或链接可以提供,或代码示例。
谢谢
带有图像的实体时应执行的步骤。
- 使用图像上传创建asp表单并收集实体的数据。理想情况下,如果您分两步完成,则为第一个图像上传。
- 提交帖子图像(也许您必须为大图像配置一些内容)和实体数据
- 检查后端中的图像。如果确定,请存储在文件夹中。
- 如果图像正常,请在数据库中创建实体。实体图像路径应从步骤 3 中的数据更新。
一些建议:
- 防御性编码。 上传图像时检查图像
- 是否有效(甚至对图像标题进行了二进制检查)
- 等待图像上传并选中以创建实体。
- 不允许在新实体插入的情况下覆盖现有图像。
- 将图像命名为主键 (1.jpg、2.jpg)
- 在加载图像时,不要假设图像会在那里。
- 不允许(如果可能)与图像进行手动交互(在计算机中不进行远程处理并将图像从一个位置复制到另一个位置)。手动交互可能会导致不一致。
我使用实体框架将 IMAGE 源本身保存到数据库中,并确保我在数据库中包含以下内容:
- 创建日期
- 文件类型(内容类型)
- 源(二进制)
- 文件名
- 文件大小
- 高度
- 宽度
我使用字节流/二进制阅读器加载它。我的代码在这里:
http://garfbradazweb.wordpress.com/2011/08/16/mvc-3-upload-sql-server-entity-framework/
完整的教程系列在这里:http://garfbradazweb.wordpress.com/welcome-to-my-ancedotes/#
在关系方面,我有以下几点:
媒体表 - 存储所有图像并包括上述列。您可能需要与其他表相关的图像。密钥是一个 Uniquieid (SQL),其 C# 类型为 Guid。
配置文件表 - 存储我的用户配置文件。在这里,我有一个ImageId,它是配置文件行和图像之间的一对一关系。
我写了一个MVCImage应用程序,向您展示如何使用它:
http://mvcimage.codeplex.com/让我知道这是否可以,或者您是否需要代码示例。
对于单个图像,我只会将其直接存储在表中。您不会膨胀数据库,因为您将图像大小调整为可接受的大小(即 128x128 像素)。
此外,无需担心文件系统备份和多个 Web 服务器的问题。
您可以将 HTML 输入标记与文件类型一起使用:
<input type="file" name="file" />
完整的 MVC 示例可以在这里找到。