iT邦幫忙

0

請問 PHP 怎麼判斷上傳的檔案類型

大大好~
小弟遇到一個困難的問題
Google 很久還沒找到解決方法 QQ
所以上來請教

現在做一個上傳檔案的網頁,
它有一個功能是將上傳的文件檔,
的內容製作縮圖,顯示在網頁上,
這部份是使用 libreoffice + ImageMagick 製作的,
問題是!!

副檔名百百種....
如果使用者上傳了 "執行檔" libreoffice 會當掉....
或者~~上傳了俺未想到的檔案類型 QQ
那麼 CPU 都會吃到 100 %
網頁進度就卡在那裏...

必須將 libreoffice kill 掉才行

因為副檔名是可以隨意更改的,
沒有副檔名也是可以,
所以一開始使用副檔名過濾上傳檔案的想法馬上 Pass 掉了

請問大大有好方法,或者套件可以準確的判斷檔案類型嗎?

感激不盡

看更多先前的討論...收起先前的討論...
q00153 iT邦新手 3 級 ‧ 2018-01-17 16:19:43 檢舉
XD~剛剛找到了一個函數
mime_content_type()
正在研究不知道能不能用
weiclin iT邦高手 4 級 ‧ 2018-01-17 16:29:03 檢舉
https://help.libreoffice.org/Common/XML_File_Formats
劃重點: Documents in OpenDocument file format are stored as compressed zip archives that contain XML files.
所以先看他是不是 zip 檔, 或是解開來看看裡面是不是 xml 檔
weiclin iT邦高手 4 級 ‧ 2018-01-17 16:30:05 檢舉
照理說是不是合法的檔案應該由 libreoffice 去判斷, 但如果他會死掉那只好由你去判斷了
q00153 iT邦新手 3 級 ‧ 2018-01-17 16:40:31 檢舉
QQ~zip 檔它還不會死掉
如果是 exe 檔 CPU 直接飆 100% 然後...就只能 kill 了
weiclin iT邦高手 4 級 ‧ 2018-01-17 16:44:46 檢舉
那你先多一步驟檢查是不是 zip 檔就好嘍, 這個有固定格式而且應該有函式能檢查
q00153 iT邦新手 3 級 ‧ 2018-01-18 13:53:23 檢舉
暫時打了個補丁,
使用 timeout 來對付這個問題了
如果轉檔時間超時,就關閉執行緒,
然後顯示錯誤訊息給使用者。
weiclin iT邦高手 4 級 ‧ 2018-01-18 14:39:59 檢舉
然後在註解裡面罵使用者, 亂傳什麼鬼檔案
q00153 iT邦新手 3 級 ‧ 2018-01-18 14:40:59 檢舉
XD~~你怎麼知道
weiclin iT邦高手 4 級 ‧ 2018-01-18 14:45:24 檢舉
是我就會這樣做 xD
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
r567tw
iT邦研究生 5 級 ‧ 2018-01-17 16:18:06

我想你可以多多參考網路上的答案
你可以使用$_FILES["file"]["type"]:上傳的檔案類型。

參考資料
http://www.wibibi.com/info.php?tid=127

0
何必問
iT邦好手 1 級 ‧ 2018-01-18 22:00:25
<input type=file accept=".xls,.xlsx,.doc,.docx,.ppt,.pptx,.7z,.rar,.zip,.pdf,.txt,.exe,image/*,.ai,.eps">

建議後端程式仍然要防呆判斷

我要發表回答

立即登入回答