首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

.WPS 檔案上傳 MIME 類型識別問題解決:application/kswps 完整指南

     編輯:程式設計綜合問答

問題背景

許多 PHP 上傳系統僅檢查常見 Office 格式(doc、docx、pdf),導致金山 WPS 專有格式 .wps 無法通過驗證。錯誤訊息通常為「檔案類型不符」,實際上是 MIME 類型陣列缺少對應項目。

標準 MIME 類型對照表

副檔名標準 MIME 類型備註
.docapplication/mswordWord 97-2003
.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentWord 2007+
.wpsapplication/kswps金山 WPS 專用格式
.pdfapplication/pdf通用文件格式
.etapplication/ksetWPS 試算表
.dpsapplication/ksdpsWPS 簡報

PHP 程式碼修正範例

$uptypes = array(
    'application/pdf',
    'application/msword',
    'application/vnd.ms-works',      // 部分舊版 WPS 可能使用此類型
    'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    'application/kswps',        // 關鍵:新增 WPS 文字處理文件
    'application/kset',         // 可選:WPS 試算表
    'application/ksdps'         // 可選:WPS 簡報
);

// 檢查上傳檔案類型
if (!in_array($_FILES['file']['type'], $uptypes)) {
    die('檔案類型不符! 僅可上傳 .doc .wps .docx .pdf 等格式');
}

重要補充:瀏覽器回報 MIME 類型不可靠

僅檢查 $_FILES['file']['type'] 存在安全風險,因為:

  • 瀏覽器根據副檔名猜測 MIME 類型,易被偽造
  • 不同瀏覽器/作業系統回報的類型可能不同
  • 使用者可透過修改檔案標頭繞過檢查

建議的多層驗證機制

  1. 副檔名白名單:pathinfo($filename, PATHINFO_EXTENSION)
  2. MIME 類型檢查:使用 finfo_file() 檢測實際檔案內容
  3. 檔案標頭驗證:讀取前幾位元組確認檔案特徵碼
  4. 檔案大小限制:防止上傳超大惡意檔案
// 更安全的驗證範例
$allowedExt = ['doc', 'docx', 'wps', 'pdf'];
$ext = strtolower(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION));

if (!in_array($ext, $allowedExt)) {
    die('副檔名不允許');
}

$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $_FILES['file']['tmp_name']);
finfo_close($finfo);

$allowedMime = [
    'application/msword',
    'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
    'application/kswps',
    'application/pdf'
];

if (!in_array($mime, $allowedMime)) {
    die('檔案內容類型不符: ' . $mime);
}

總結

.wps 檔案對應的標準 MIME 類型為 application/kswps。單純新增此類型可解決基本上傳問題,但生產環境務必實施多層驗證,確保上傳安全性與相容性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved