如何檢測上傳的文件是否是使用PHP的圖像?我不希望使用imagesize()
或檢查文件擴展名。檢測上傳的文件是否是PHP中的圖像
回答
別傻了,使用工具,爲此特別製作 - 和getimagesize()
我以爲只會檢查圖像大小?不是它是否是一個圖像? – 2010-08-22 14:46:09
@ jiewmeng你的邏輯在哪裏?我們不能沒有圖像的尺寸,我們可以嗎? – 2010-08-22 14:51:07
@jiwemeng手冊:'...將確定任何給定圖像文件的大小,並返回尺寸以及文件類型和高度/寬度文本字符串...' – 2010-08-22 14:57:03
您可以使用mime_content_type並驗證上傳文件的類型。由於mime_content_type已棄用,因此可以使用其備用finfo_open。
「這個函數已被棄用」 – svens 2010-08-22 14:33:04
使用'fileinfo()'代替它,它代替了mime_content_type – 2010-08-22 16:57:15
您可以使用ImageMagick identify tool來獲得更廣泛的圖像格式比和getimagesize()的信息支持,例如
$uploaded=$_FILES["myfile"]["tmp_name"];
$info = `identify $uploaded`;
下面是一個JPEG
img029.jpg JPEG 1240x1753 1240x1753+0+0 8-bit PseudoClass 256c 27.3KiB 0.000u 0:00.000
好的解決方案 - 當然,安裝了ImageMagick並且可以調用外部二進制文件。 – 2010-08-22 14:56:03
雖然有點矯枉過正? – 2010-08-22 15:24:03
@Kieran如果他想檢測比getimagesize()支持的更多圖像格式,則不需要。 – 2010-08-22 15:50:27
如果你談論的是那些將要顯示在瀏覽器的圖像輸出示例,和你想爲確保儘可能它們是有效的圖像,我建議使用適當的imagecreatefrom*()
功能在GD中打開它們並將它們保存回所需的目標格式。
這不僅確保它們是圖像 - 如果輸入數據被破壞,這將不起作用 - 但它也會濾除任何可能的惡意攻擊,利用瀏覽器圖形庫中的泄漏,並移除圖像中包含的元數據(其中經常包含作者,用於創建圖像的程序,相機,位置和拍攝時間等敏感信息,並確保可以在瀏覽器中查看圖像(CMYK JPG上傳,不會顯示任何版本的IE ,不起作用。)
這樣做的一個潛在缺點是JPEG圖像可能會受到質量輕微損失(GD的JPG編碼質量不好),並且透明膠片圖像可能會出現問題。
+1進行重新編碼。這也可以通過IMagick擴展來完成,這種擴展佔用的資源較少。 – 2010-08-22 14:50:57
- 1. 用php檢測文件是否正在上傳或打開
- 2. 如何檢查上傳的文件是否是PHP中的SQLite格式文件?
- 3. 如何檢查上傳的文件是否是php?
- 4. 如何檢查上傳的文件是否爲php文件?
- 5. 是否有任何PHP插件上傳ckeditor中的圖像?
- 6. 檢查上傳的文件是在C#中的ASP.NET MVC圖像
- 7. 檢查文件是否是aws上的圖像或xml S3
- 8. 確保上傳的文件是PHP中的圖像
- 9. JavaScript:檢測上傳表格圖像是否完成
- 10. 如何檢查上傳的文件是否是XLS文件?
- 11. 如何檢測用戶上傳的文件是否大於post_max_size?
- 12. 是否有可能檢測到重複的圖像文件?
- 13. 如何檢查文件是否是C++中的圖像類型?
- 14. (rails)如何驗證上傳的.txt文件是否不是圖像文件?
- 15. 檢查文件是否已上傳
- 16. 檢查文件是否要上傳? CodeIgniter
- 17. 檢查文件是否爲圖像
- 18. 檢查文件是否爲圖像
- 19. 是否可以知道上傳文件的類型是否爲圖像?
- 20. 如何使用jQuery檢測文件上傳是否已完成?
- 21. 檢測圖像控件是否已完成更新其圖像
- 22. jQuery文件上傳:檢測是否選擇了相同的文件
- 23. PHP如何檢查文件是mp3還是圖像文件?
- 24. 檢測圖像是否有水印?
- 25. php如何測試文件是否已完全上傳
- 26. PHP測試表單是否有文件上傳
- 27. 檢查文件是否是有效的圖像
- 28. 如何檢查文件是否已上傳在php codeigniter
- 29. PHP檢查多個文件上傳是否爲空
- 30. PHP檢查是否有文件選擇上傳
「一幅圖像」究竟意味着什麼?哪些格式? – 2010-08-22 14:26:32
任何格式,jpeg,png,bmp – X10nD 2010-08-22 14:27:22
你是什麼意思的「任何格式」?怎麼樣TIFF,PCX,PSD?那麼RGB/CMYK圖像是一種CMYK JPEG(不能在Internet Explorer中工作)的有效圖像?你需要在瀏覽器中顯示圖像嗎?那麼像動畫GIF這樣的動畫格式呢? – 2010-08-22 14:28:34