关于图片上传的几个问题

时间:2010-09-17 17:11:28

标签: .net asp.net asp.net-mvc

我需要将图像上传到我的网站,进行一些图像处理(调整大小,获取图像大小\分辨率,转换为jpg格式等),然后将其嵌入到我的网站页面中。 我有几个问题:

  • 如何检查上传文件是否为图片?
  • 哪里有更好的商店图片?mssql或只是文件夹?
  • 如何检测图像类型。是MIME信任源吗?
  • 如何进行图像处理。 System.Drawing是一个好工具吗?

3 个答案:

答案 0 :(得分:0)

  

如何检查上传文件是否为图片?

您可以查看上传的文件名并使用扩展名,但这不是100%保证。任何人都可以将.exe重命名为.jpg,因此没有可靠的方法。请记住,你在服务器上得到的只是一个文件名和一个字节数组,可以是任何东西。另一种技术包括查看上传文件的前几个字节并尝试猜测其类型,但再次无法保证。

  

哪里有更好的商店图片?mssql或只是文件夹?

没有明确的答案。有些人喜欢文件系统,有些则喜欢SQL我更喜欢在文件系统上存储文件,只保存SQL中的路径。此外,SQL Server 2008具有FileStream数据类型,值得检查。

  

如何检测图像类型。是MIME信任源吗?

可以再次使用文件扩展名,但不是100%值得信赖。

  

如何进行图像处理。 System.Drawing是一个好的工具吗?

是的,GDI +足以执行基本图像处理,例如调整常见图像类型的大小。

答案 1 :(得分:0)

1)廉价的检测方式是延伸。 主要是安全的方法是读取标头的前几个字节,看它是否与已知的图像格式标题匹配。

2)MSSQL 2008有一个FileStream类型,这是两全其美的。如果您使用的是较旧版本的sql server,那么它就是一个折腾。如果图像必须可由多个Web服务器访问,并且可移植性/备份是一个问题,那么您必须将它放在数据库服务器中...

如果多个Web服务器,但不关心可移植性/备份,则将其存储在NAS上。

如果单个Web服务器和知道它将无法扩展,那么在本地Web服务器文件系统上就可以了。

3)不相信任何人。见第1项。

4)购买图书馆或找一个开源图书馆。它会让你的生活更轻松。顺便提一下,这有助于第1项和第3项。上传图像后,使用库打开它。如果图书馆抱怨,那么你可以肯定它不是一个真实的形象。

您可以查看plupload以了解他们在做什么:http://www.plupload.com/

答案 2 :(得分:0)

您可以查看我的博文:

使用JavaScript + ASHX Handler上传异步图像。 http://weblogs.asp.net/rternier/archive/2010/08/18/jquery-image-upload-amp-refresh-using-an-ashx-file.aspx

用于图像上传的服务器端代码(ASHX和图像处理) http://weblogs.asp.net/rternier/archive/2010/09/17/jquery-image-upload-amp-refresh-using-an-ashx-file-part-2.aspx

IT将涵盖很多这方面,但是你走了。

如何检查它是否是图像: 上传时,您可以检查文件扩展名以查看它是什么。上传后,您可以检查文件的mime类型。

我喜欢将图像作为二进制文件存储在数据库中。管理起来要容易得多,我不需要从Web服务器硬盘读取/写入来获取图像。

要对图像进行任何修改,请使用System.Drawing。