2009-10-10 79 views
-1

我創建一個腳本只能上傳zip文件,我有以下驗證媒體鏈接:應用程序/力下載

if($itemtype != "application/x-zip-compressed" 
    && $itemtype != "application/zip" && $itemtype != "application/octet-stream") { 
    throw new exception("Your file should be a zip file!"); 
} 

,但我有一個文件類型應用程序/力下載一個文件,但當我查看mime類型時,我無法找到它,是否應該將其添加到驗證中(請參閱上面的代碼)?我嘗試上傳的文件應該是一個普通的zip文件...嗯,這就是我認爲的

回答

2

修復你的代碼,讓你的問題更清晰。

這就是說,目前還不清楚你是否試圖驗證上傳的文件或下載的文件。

我要大膽猜測,並說你可能正在嘗試提供已上傳的文件。 Mimetypes是一種非常糟糕的驗證方式,但是您的問題實際上可能在於您的虛擬主機。在過去的類似情況下,我看到共享託管服務提供商在未經我許可的情況下插入了各種標頭,導致類似於您可能遇到的問題,而您的問題更加精確。不幸的是,這種情況下的解決方案是重新編寫整個php下載服務過程,這個過程有很多問題。

0

您需要檢查文件擴展名,而不是內容類型。尤其是,因爲不同的瀏覽器可以發送不同的內容類型。

+0

很多逾期了,我知道,但是因爲我在搜索時偶然發現了這個問題,不妨指出一下其他任性的旅行者......檢查擴展並不比檢查瀏覽器提供的內容類型更好。這兩者都很容易被客戶操縱,因此不可信任。如果您想要中途可靠的東西,請使用Fileinfo擴展名。它會嘗試根據文件內容推斷出類型,而不是像這樣的任何元數據。 – Atli 2013-07-28 08:21:01