台灣最大程式設計社群網站
線上人數
1871
 
會員總數:246050
討論主題:189633
歡迎您免費加入會員
討論區列表 >> PHP >> uploadify 副檔名 大寫JPG 錯誤
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
uploadify 副檔名 大寫JPG 錯誤
價值 : 50 QP  點閱數:1652 回應數:9
樓主

阿醜
初學者
15 120
1250 174
發送站內信

我在作圖片上傳時,遇到客戶.JPG 上傳時會錯誤 .jpg就不會錯
png 檔也會錯,這到底是為什麼,求大大解





搜尋相關Tags的文章: [ php ] , [ uploadify ] , [ JPG ] ,
本篇文章發表於2015-05-20 19:50
1樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
在判斷前先用strtolower()函數將$filetype轉成小寫,這樣比較不容易出錯吧?
本篇文章回覆於2015-05-21 09:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
原則上~~~我也是建議你直接用strtolower。將其全化成小寫來處理。這樣判斷式就不用寫那麼多了。
可以的話。把錯誤訊息也po上來會比較容易判斷原因。
本篇文章回覆於2015-05-21 10:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

阿醜
檢舉此回應
直接把 $_FILES['Filedata']["name"] 改成小寫???這樣沒什麼意義吧
本篇文章回覆於2015-05-21 19:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
我跟星空大的意思是要你做副檔名判斷之前
先把要判斷的副檔名用函數強制轉成小寫
這樣就不需要考慮使用者上傳的檔案副檔名有大寫的情況,你的判斷式就能大幅精簡
要知道就算是.JpG .jPg .JPg .jPG這樣,windows一樣能用
雖說很少有人無聊到把檔名弄成這樣,但仍不能排除這種情況
請永遠不要猜測使用者智商的下限,以及系統會面對的最糟情況
本篇文章回覆於2015-05-22 09:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

阿醜
檢舉此回應
回四樓 跟版主話

一般上傳按下 submit 時候,input type = file 就會變成 $_File的 物件上傳

所以四樓大跟版大說的是指 我在上傳時就先變更 檔名嗎?這樣也不太對.....

我現在不懂的是 「作法」 因為 AAA.jPG 變成 $_FILE["file"]['name'] 改成 小寫的.....這樣 $_FILE['file']['tmp_name'] 的屬性也不會改變呀,還是我該把$_FILE['file']['tmp_name'] 變成小寫?這裡我不是很懂
本篇文章回覆於2015-05-22 10:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

迷路
捐贈 VP 給 迷路 檢舉此回應
跟你的$_FILE沒有關係
你貼出的程式碼1-19行不是依照$filetype的值不同做處理嗎?
按照你的判斷式我和星空大推測$filetype是抓上傳檔案的副檔名

我們的意思是在第1行前面加上一行
$filetype = strtolower($filetype);
strtolower()這個函數會將傳入字串中的英文字母全部轉成小寫的
這樣,你在1-19之間的判斷就不用考慮大小寫的問題

再強調一次,和「$_FILE」沒有關係
本篇文章回覆於2015-05-22 10:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

阿醜
檢舉此回應
可是會出錯的是當使用者上傳 大寫的JPG時
$src = imagecreatefromjpeg($_FILES['Filedata']["tmp_name"]); 會錯

就算我把filetype 改成小寫,$_FILES['filedata][tmpname]的屬性還是不變吧 = =
本篇文章回覆於2015-05-23 19:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
我重新說明問題好了~~~總覺得有點像是鬼打牆

1.將$filetype 改成小寫,是為了其下的判斷精簡化。簡明程式碼用而已。

2.你碰到的問題,我推測是,雖然用的是.jpg。但實際圖檔並非是jpg格式。所以造成圖檔建立時的錯誤。
你可以先將@符號拿掉。先看看出現怎麼樣的錯誤訊息


由於你的程式我不太清楚你的$filetype 是怎麼來的。是直接判斷檔名???還是直接取用$_FILES['file']['type']這個來判斷??
正常來講,我會取用$_FILES['file']['type']這個來判斷。
然後再去查看 http://metadata.teldap.tw/elearning/doc/MIME_Type.pdf 這個內容。
從中去核對真正的檔案類型。
本篇文章回覆於2015-05-24 10:10
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

阿醜
檢舉此回應
$tmp = explode(".", $_FILES['Filedata']["name"]);
$filetype=end($tmp);

filetype 是這樣來的,我測了一下,有些電腦上傳大寫的JPG會錯,有些不會,但如果是小寫的jpg是一定不會錯....冏了
本篇文章回覆於2015-05-26 05:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.