2010-09-17 54 views
0

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

  • 如何检查上传文件是图像?
  • 哪里更好的存储图像 - mssql或只是文件夹?
  • 如何检测图像类型。 MIME信任源?
  • 如何进行图像处理。 System.Drawing是不错的工具?

回答

0

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

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

哪里更好的存储图像 - mssql或只是文件夹?

没有确切的答案。一些更喜欢文件系统,其他SQL。我更喜欢将文件存储在文件系统中,并只保存SQL中的路径。此外SQL Server 2008有一个FileStream数据类型,这可能值得检查。

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

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

如何进行图像处理。 System.Drawing是不错的工具?

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

0

1)便宜的检测方式是扩展。 主要是安全的方法是读取标题的前几个字节,看它是否与已知的图像格式标题匹配。

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

如果多个Web服务器,但可移植性/备份不是问题,那么将其存储在NAS上。

如果单个web服务器和你知道它不会被放大,那么在本地web服务器上的文件系统就OK了。

3)不信任任何人。参见条目1.

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

你可能检查到plupload,看看他们在做什么:http://www.plupload.com/

0

您可以检查出我的博客文章:

使用JavaScript + ASHX处理程序异步图片上传。对于图片上传(ASHX和图像处理) http://weblogs.asp.net/rternier/archive/2010/09/17/jquery-image-upload-amp-refresh-using-an-ashx-file-part-2.aspx

它将涵盖了很多本,但在这里,你去 http://weblogs.asp.net/rternier/archive/2010/08/18/jquery-image-upload-amp-refresh-using-an-ashx-file.aspx

服务器端代码。

如何查看是否为图像: 正在上传您可以检查文件扩展名以了解它是什么。上传后,您可以检查文件的MIME类型。

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

对图像使用System.Drawing做任何修改。