首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

新浪 SAE 文件上傳失效?原來是 name 屬性大小寫惹的禍

     編輯:PHP 相關知識

新浪 SAE 文件上傳失效?原來是 name 屬性大小寫惹的禍

在 SAE(或其他雲平台)開發時,明明表單寫得沒問題,卻總提示「未選擇上傳文件」。排查半天發現:<input type="file" name="attaFile"> 中的 F 大寫 導致 $_FILES['attafile'] 取不到值(PHP 預設將鍵名轉為小寫?實際上 SAE 環境對大小寫敏感)。改為 name="attafile" 即刻正常。

問題表單

<form method="post" action="upload.php" enctype="multipart/form-data">
    <input type="file" name="attaFile" id="attaFile" /> <!-- 大寫 F -->
    <button type="submit">上傳</button>
</form>

修正後

<input type="file" name="attafile" id="attafile" /> <!-- 全小寫 -->

深度解析

  • PHP 手冊說明:$_FILES 鍵名直接對應表單 name 屬性,不會自動轉換大小寫。
  • 部分雲平台(SAE、BAE 等)底層用 Nginx + FastCGI,對 header 解析可能遵循 CGI 規範(大小寫不敏感),但實測 SAE 會將 name 轉為小寫存入 $_FILES,導致大寫鍵名取不到值。
  • 最佳實踐:所有表單 name、id、JS 變數統一用小寫加底線,避免跨平台坑。

檢查清單

  1. form 標籤有 enctype="multipart/form-data"
  2. file input 的 name 全小寫、無特殊字符
  3. PHP 端用 $_FILES['attafile'] 而非 $_FILES['attaFile']
  4. php.ini 中 file_uploads = On、upload_max_filesize 足夠
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved