.net 关于图像上传的几个问题

.net 关于图像上传的几个问题,.net,asp.net,asp.net-mvc,.net,Asp.net,Asp.net Mvc,我需要上传图像到我的网站,使一些图像处理,得到图像大小\分辨率,转换成jpg格式等,然后嵌入到我的网站页面。 我有几个问题: 如何检查上传文件是否为图像? 哪里是更好的存储图像-mssql还是文件夹? 如何检测图像类型。MIME信任源是什么? 如何进行图像处理。系统图是好的仪器吗? 如何检查上传文件是否为图像 您可以查看上传的文件名并使用扩展名,但这不是100%的保证。任何人都可以将.exe重命名为.jpg,因此没有可靠的方法。记住,在服务器上得到的只是一个文件名和一个字节数组,可以是任何东西。

我需要上传图像到我的网站,使一些图像处理,得到图像大小\分辨率,转换成jpg格式等,然后嵌入到我的网站页面。 我有几个问题:

如何检查上传文件是否为图像? 哪里是更好的存储图像-mssql还是文件夹? 如何检测图像类型。MIME信任源是什么? 如何进行图像处理。系统图是好的仪器吗? 如何检查上传文件是否为图像

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

哪里是更好的存储图像-mssql还是文件夹

没有明确的答案。有些人喜欢文件系统,有些人喜欢SQL。我更喜欢将文件存储在文件系统中,并且只保存SQL中的路径。SQLServer2008还有一个数据类型,可能值得检查

如何检测图像类型。MIME信任源是什么

同样,可以使用文件扩展名,但不是100%可信

如何进行图像处理。系统图是好的仪器吗


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

1廉价的检测方法是通过扩展。最安全的方法是读取头的前几个字节,看看它是否与已知的图像格式头匹配

2 MSSQL 2008有一个文件流类型,它是两个世界中最好的。如果您使用的是较旧版本的sql server,那么这是一个难题。如果图像必须由多个web服务器访问,并且需要考虑可移植性/备份,那么您必须将其放在数据库服务器中

如果不考虑多个web服务器,但考虑可移植性/备份,则将其存储在NAS上

如果您知道单个web服务器无法扩展,那么本地web服务器上的文件系统就可以了

不要相信任何人。见项目1

4买一个图书馆或找一个开源图书馆。这会让你的生活更轻松。顺便说一句,这有助于第1项和第3项。上载图像时,请将其与库一起打开。如果图书馆抱怨,那么你可以很肯定这不是真实的图像


您可以登录plupload查看他们在做什么:

您可以查看我的博客帖子:

使用JavaScript+ASHX处理程序异步上传图像。

用于图像上传ASHX和图像处理的服务器端代码

这将涵盖很多内容,但给你

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

我喜欢将图像作为二进制文件存储在数据库中。它更易于管理,而且我不需要从web服务器硬盘读取/写入图像

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