PHP Conference Japan 2024
新增註解

使用者貢獻的註解 29 則註解

381
CertaiN
10 年前
您最好徹底檢查 $_FILES 結構和值。
以下程式碼絕對不會造成任何錯誤。

範例
<?php

header
('Content-Type: text/plain; charset=utf-8');

try {

// 未定義 | 多個檔案 | $_FILES 損毀攻擊
// 如果此請求屬於其中任何一種情況,則視為無效。
if (
!isset(
$_FILES['upfile']['error']) ||
is_array($_FILES['upfile']['error'])
) {
throw new
RuntimeException('無效的參數。');
}

// 檢查 $_FILES['upfile']['error'] 值。
switch ($_FILES['upfile']['error']) {
case
UPLOAD_ERR_OK:
break;
case
UPLOAD_ERR_NO_FILE:
throw new
RuntimeException('未傳送檔案。');
case
UPLOAD_ERR_INI_SIZE:
case
UPLOAD_ERR_FORM_SIZE:
throw new
RuntimeException('超出檔案大小限制。');
default:
throw new
RuntimeException('未知的錯誤。');
}

// 您也應該在此處檢查檔案大小。
if ($_FILES['upfile']['size'] > 1000000) {
throw new
RuntimeException('超出檔案大小限制。');
}

// 不要信任 $_FILES['upfile']['mime'] 值!!
// 請自行檢查 MIME 類型。
$finfo = new finfo(FILEINFO_MIME_TYPE);
if (
false === $ext = array_search(
$finfo->file($_FILES['upfile']['tmp_name']),
array(
'jpg' => 'image/jpeg',
'png' => 'image/png',
'gif' => 'image/gif',
),
true
)) {
throw new
RuntimeException('無效的檔案格式。');
}

// 您應該為其命名獨特名稱。
// 請勿在未經驗證的情況下使用 $_FILES['upfile']['name']!!
// 在此範例中,從其二進位資料取得安全的獨特名稱。
if (!move_uploaded_file(
$_FILES['upfile']['tmp_name'],
sprintf('./uploads/%s.%s',
sha1_file($_FILES['upfile']['tmp_name']),
$ext
)
)) {
throw new
RuntimeException('無法移動上傳的檔案。');
}

echo
'檔案上傳成功。';

} catch (
RuntimeException $e) {

echo
$e->getMessage();

}

?>
20
steve dot criddle at crd-sector dot com
20 年前
Mac 上的 IE 有點麻煩。如果您上傳的檔案具有未知的檔案副檔名,IE 會以 "application/x-macbinary" 的 mime 類型上傳該檔案。產生的檔案包含包覆在檔案周圍的資源分支。這並非特別有用。

以下程式碼假設 mime 類型在 $type 中,且您已將檔案內容載入到 $content 中。如果檔案採用 MacBinary 格式,它會深入研究資源分支標頭,取得資料分支的長度(位元組 83-86)並使用它來移除資源分支。

(可能還有更好的方法可以做到,但這解決了我的問題)

<?php
if ($type == 'application/x-macbinary') {
if (
strlen($content) < 128) die('檔案太小');
$length = 0;
for (
$i=83; $i<=86; $i++) {
$length = ($length * 256) + ord(substr($content,$i,1));
}
$content = substr($content,128,$length);
}
?>
17
~caetin~ ( at ) ~hotpop~ ( dot ) ~com~
20 年前
來自手冊

如果您的表單中未選取任何檔案進行上傳,PHP 將會將 $_FILES['userfile']['size'] 傳回為 0,並將 $_FILES['userfile']['tmp_name'] 傳回為 none。

自 PHP 4.2.0 起,"none" 不再是未上傳任何檔案的可靠決定因素。如果您按一下「錯誤代碼」連結,它會記錄下來,但您需要查看 $_FILES['your_file']['error']。如果它是 4,則表示未選取任何檔案。
13
am at netactor dot NO_SPAN dot com
22 年前
如果您使用重新編碼字元的模組,您的二進位檔案可能會上傳不正確。例如,對於俄文 Apache,您應該使用
<Files ScriptThatReceivesUploads.php>
CharsetDisable On
</Files>
17
jan at lanteraudio dot nl
11 年前
也遇到了 max_file_size 問題,特別是上傳大於設定的 upload_max_filesize 的檔案時,沒有任何回應,也沒有任何錯誤。

我發現導致此無回應問題的不是 upload_max_filesize 設定,而是 post_max_size 設定。因此,如果您將 post_max_size 設定為遠大於 upload_max_filesize,至少在檔案大小超出 upload_max_filesize 但仍在 post_max_size 限制內時,您可能會收到錯誤回應。

希望這對大家有幫助。
10
myko AT blue needle DOT com
19 年前
快速筆記一下,Apache、MAX_FILE_SIZE 隱藏表單欄位和 zlib.output_compression = On 之間存在一個問題。似乎即使 PHP 正確拋出 MAX_FILE_SIZE 錯誤,瀏覽器仍然會持續傳送整個檔案。將 zlib 壓縮關閉似乎可以解決問題。我沒時間深入研究並找出是誰的錯,但想讓其他人免去為這個問題傷腦筋的麻煩。
25
ceo at l-i-e dot com
19 年前
在範例程式碼中使用 /var/www/uploads 根本是犯罪,依我淺見。

在任何伺服器上,*都絕對不應該*將不受信任的檔案上傳到你的網頁目錄樹中。

在共用伺服器上,網頁目錄樹中的任何目錄也不應該有足夠讓上傳成功的權限。該共用伺服器上的任何其他使用者都可以撰寫 PHP 腳本,將他們想放的任何東西傾印到那裡!

$_FILES['userfile']['type'] 本質上是*無用*的。
A. 瀏覽器在 MIME 類型上並不一致,因此你永遠無法捕獲任何給定檔案格式的所有可能類型組合。
B. 它可以被偽造,所以無論如何,它的安全性都很差勁。

程式碼應該*檢查*實際檔案,以查看它是否看起來正常。

例如,可以快速輕鬆地使用 imagegetsize 執行圖片,這樣至少你知道前 N 個位元組*看起來*像圖片。這不能保證它是有效的圖片,但它大大降低了它成為可行的安全漏洞檔案的可能性。

對於基於 Un*x 的伺服器,可以使用 exec 和 'file' 命令來查看作業系統是否認為內部內容與你期望的資料類型一致。

我過去在檔案上傳中讀取 '/tmp' 檔案時遇到問題。如果 PHP 允許我在嘗試對其執行 move_uploaded_file 之前讀取該檔案就好了,但 PHP 不會,大概是因為它假設我會做一些危險的事情來讀取不受信任的檔案。好吧。應該將上傳的檔案移動到某個暫存目錄。然後你盡可能徹底地檢查它的內容。然後,如果它看起來正常,則將其移動到你的網頁目錄樹之外的目錄。任何對該檔案的存取都應該通過讀取檔案的 PHP 腳本進行。將其放入你的網頁目錄樹中,即使經過你所能想到的所有檢查,依我淺見,都太危險了。

這裡有許多使用者提供的註解給出了天真(錯誤)的建議。請小心。
18
info at levaravel dot com
15 年前
一個小程式碼片段,它會以更易讀的格式傳回檔案大小。

<?php

function display_filesize($filesize){

if(
is_numeric($filesize)){
$decr = 1024; $step = 0;
$prefix = array('Byte','KB','MB','GB','TB','PB');

while((
$filesize / $decr) > 0.9){
$filesize = $filesize / $decr;
$step++;
}
return
round($filesize,2).' '.$prefix[$step];
} else {

return
'NaN';
}

}

?>
6
david at cygnet dot be
18 年前
如果你在透過 SSL 連線將檔案從 Internet Explorer 發佈到 PHP 腳本時遇到問題,例如「無法顯示網頁」或空的 $_FILES 和 $_POST 陣列(jason 在 2006 年 1 月 10 日 02:08 描述),那麼請查看這篇 Microsoft 知識庫文章

http://support.microsoft.com/?kbid=889334

這篇知識庫文章解釋了自 Service Pack 2 以來,從 IE 透過 SSL 發佈時可能會出現問題。值得檢查你的問題是否是 IE 特有的,因為這絕對不是 PHP 的問題!
13
jedi_aka at yahoo dot com
18 年前
對於那些試圖讓上傳在 Windows XP/2000/XP Media 和類似系統上的 IIS 上正常運作的人,以下是一個快速待辦事項。

1) 在程式碼運行的相同目錄中建立子目錄 "uploads/" 後,使用上面 oportocala 的程式碼,並絕對確保你嘗試寫入的檔案寫入該資料夾下。(我建議使用 echo $uploadfile; 列印它)

2) 在 Windows 檔案總管中,瀏覽到上面建立的 upload 目錄並分享它。為此,請執行以下子步驟。
a) 右鍵按一下資料夾,然後按一下「共用和安全性...」
b) 勾選「在網路上共用這個資料夾」
c) 勾選「允許網路使用者變更我的檔案」(這個步驟*非常重要*)
d) 按一下「確定」或「套用」

3) 然後你可以進入 IIS 設定其讀寫權限。為此,請執行以下子步驟。
a) 開啟 IIS(開始/控制台(傳統檢視)/系統管理工具/Internet Information Service)
b) 瀏覽到你的資料夾(我們上面建立的資料夾)
c) 右鍵按一下並選取「內容」。
d) 在「目錄」索引標籤中,確保勾選「讀取」、「寫入」和「目錄瀏覽」。
e) 對於安全狂熱者,你也應該確保將「執行權限:」設定為「僅限指令碼」或更低(*請勿*設定為「指令碼和可執行檔」)(這是因為有人可以將指令碼上傳到你的目錄並執行它。而且,老兄,你絕對不希望這種情況發生)。

就這樣。

如果它對你有用或沒有用,請給我回饋,以便我可以更新待辦事項。

jedi_aka@yahoo.com

PS:非常感謝 oportocala
19
xmontero at dsitelecom dot com
12 年前
如果「大型檔案」(例如:50 或 100 MB)失敗,請檢查此項

可能是你到伺服器的外送連線速度緩慢,並且可能會逾時,不是「執行時間」,而是「輸入時間」,例如在我們的系統中預設為 60 秒。在我們的例子中,大型上傳可能需要 1 或 2 個小時。

此外,我們還有「工作階段設定」,應該在上傳後保留。

1) 你可能需要檢閱這些 ini 條目

* session.gc_maxlifetime
* max_input_time
* max_execution_time
* upload_max_filesize
* post_max_size

2) 仍然失敗?請注意,並非所有設定都可以從指令碼本身變更。ini_set() 可能無法覆寫。

更多資訊請參閱此處
https://php.dev.org.tw/manual/es/ini.list.php

你可以看到「upload_max_filesize」和其他項目,是 PHP_INI_PERDIR 而不是 PHP_INI_ALL。這使使用 ini_set() 無效。
https://php.dev.org.tw/manual/en/configuration.changes.modes.php

請改用 .htaccess。

3) 仍然失敗?只需確保你啟用了 ".htaccess" 來覆寫你的 PHP 設定。這是用 Apache 檔案完成的。你至少需要 AllowOverride Options。

請參閱此處
https://php.dev.org.tw/manual/en/configuration.changes.php

如果你的主檔案包含 AllowOverride None,你必須手動允許此設定。

結論

根據系統的不同,若要允許「大型檔案上傳」,你必須一直往上追溯並觸碰到你的組態,直到 Apache 組態。

範例檔案

這些對我來說適用,適用於持續 2 小時的 100MB 上傳

在 apache-virtual-host 中
-----------------------------------------------------------
<Directory /var/www/MyProgram>
AllowOverride Options
</Directory>
-----------------------------------------------------------

在 .htaccess 中
-----------------------------------------------------------
php_value session.gc_maxlifetime 10800
php_value max_input_time 10800
php_value max_execution_time 10800
php_value upload_max_filesize 110M
php_value post_max_size 120M
-----------------------------------------------------------

在範例中,
- 因為我最後需要 1 到 2 個小時,所以我允許 3 個小時 (3600x3)
- 因為我需要 100MB,所以我允許檔案上方有空間 (110M),並為整個 post 多留一些空間 (120M)。
19
svenr at selfhtml dot org
17 年前
關於 MAX_FILE_SIZE 隱藏表單欄位的澄清

PHP 有一個有點奇怪的功能,可以檢查多個「最大檔案大小」。

兩個廣為人知的限制是 php.ini 設定 "post_max_size" 和 "upload_max_size",它們結合起來對可以接收的最大資料量施加了硬性限制。

除了這個之外,PHP 還以某種方式實作了一個軟性限制功能。它會檢查是否存在名為 "max_file_size" 的表單欄位(大寫也可以),該欄位應包含一個整數,表示允許的最大位元組數。如果上傳的檔案大於此欄位中的整數,則 PHP 將不允許上傳,並在 $_FILES 陣列中顯示錯誤代碼。

PHP 文件還模糊地提及(或曾經提及 - 請參閱錯誤 #40387 - http://bugs.php.net/bug.php?id=40387)「允許瀏覽器在上傳前檢查檔案大小」。然而,這並非事實,而且從來就不是。直到今天,從來沒有 RFC 提出使用此類名稱的表單欄位,也沒有瀏覽器實際檢查其是否存在或內容,或者阻止任何事情。PHP 文件暗示瀏覽器可能會警告使用者他的上傳檔案太大 - 這根本是錯誤的。

請注意,使用此 PHP 功能並不是一個好主意。表單欄位很容易被客戶端更改。如果你必須檢查檔案的大小,請在你的腳本中按照慣例使用腳本定義的整數,而不是從 HTTP 客戶端取得的任意數字(從安全角度來看,必須始終不信任該數字)。
10
Rob
16 年前
你的網站根目錄中不應有任何具有檔案上傳所需權限的目錄。如果你要執行檔案上傳,我建議你將 PHP FTP 函式與你的檔案欄位結合使用,這樣檔案就會傳輸到與你的伺服器分離的遠端 FTP 位置。
20
keith at phpdiary dot org
19 年前
注意:*請勿*信任 $_FILES['userfile']['type'] 來驗證上傳的檔案類型;如果你這樣做,你的伺服器可能會受到危害。我將在下面告訴你原因

該手冊(如果你向上捲動)指出:$_FILES['userfile']['type'] - 檔案的 MIME 類型(如果瀏覽器提供了此資訊)。例如「image/gif」。

請注意,此 MIME 類型很容易被偽造,因為 PHP 在驗證它是否真的是終端使用者報告的內容方面並沒有走得很遠!

因此,有人可能會以「image/gif」的形式上傳一個惡意的 .php 腳本,並執行該「影像」的 URL。

我最好的建議是檢查檔案的副檔名,並使用 exif_imagetype() 來檢查有效的影像。許多人建議使用 getimagesize(),如果檔案確實是影像,則該函式會傳回一個陣列,否則會傳回 false,但 exif_imagetype() 速度快得多。(手冊是這麼說的)
8
damien from valex
15 年前
這是檢查過多 POST 資料的較簡單方法(替代 sonic-world.ru 中 v3 的方法)。

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && empty($_POST) && $_SERVER['CONTENT_LENGTH'] > 0) {
throw new
Exception(sprintf('伺服器因目前的設定,無法處理過多的 POST 資料 (%s 位元組)', $_SERVER['CONTENT_LENGTH']));
}
?>
7
geert dot php at myrosoft dot com
18 年前
當檔案名稱包含單引號時,部分檔案名稱會遺失。
例如:上傳一個檔案名稱為
startName 'middlepart' endName.txt
將會上傳(並因此儲存在 $_Files ['userfile'] 變數中)為
endName.txt
跳過第二個單引號之前的所有內容。
7
robpet at tds dot net
19 年前
有人指出,上傳目錄的權限不正確可能會阻止照片或其他檔案上傳。將目錄的 Apache 所有者設定不正確也會阻止檔案上傳 -- 我使用一個 PHP 腳本,在將上傳的檔案放入其中之前,會先建立一個目錄(如果它還不存在)。當腳本建立目錄,然後將上傳的檔案複製到目錄中時,沒有問題,因為檔案的所有者是 Apache 執行的身份,通常是「nobody」。然而,假設我已將網站移至新的伺服器,並使用 FTP 複製了現有的檔案目錄。在這種情況下,所有者將與 Apache 所有者的名稱不同,並且檔案將無法上傳。解決方案是使用 TelNet 連線到網站,並使用 CHOWN 指令將所有者重設為「nobody」或 Apache 執行的任何身份。
6
Thomas
12 年前
MIME 類型可以偽造。

VVV

$_FILES['userfile']['type']

檔案的 MIME 類型,如果瀏覽器提供了此資訊。一個範例是「image/gif」。然而,此 MIME 類型在 PHP 端不會檢查,因此不要將其值視為理所當然。

https://php.dev.org.tw/manual/en/features.file-upload.post-method.php

[編輯註解:已移除對已刪除註解的參考,並編輯註解使其本身有意義。]
5
rnagavel at yahoo dot com dot au
16 年前
如果 $_FILES 始終為空,請檢查表單的方法。
它應該是 POST。表單的預設方法是 GET。

<form action="myaction.php">
<input type="file" name"userfile">
</form>
檔案將不會上傳,因為表單的預設方法是 GET。

<form action="myaction.php" method="POST">
<input type="file" name"userfile">
</form>
檔案將會上傳,並且 $_FILES 將會被填入。
5
Tyfud
19 年前
請務必注意,當使用 move_uploaded_file() 指令時,某些設定 (尤其是 IIS) 如果您在目的地路徑前面加上「/」可能會失敗。嘗試以下操作

<?php move_uploaded_file($tmpFileName,'uploads/'.$fileName); ?>

設定權限也是必要的。請確保所有帳戶都具有對上傳目錄的寫入權限,如果您希望稍後檢視這些檔案,則還需具有讀取權限。如果仍然遇到存取錯誤,您可能還需要之後 chmod() 該目錄或檔案。
5
olijon, iceland
20 年前
當上傳大型圖像時,我使用 Netscape 時出現「文件不包含資料」錯誤,而使用 Explorer 時則出現錯誤頁面。我的伺服器設定是 RH Linux 9、Apache 2 和 PHP 4.3。

我發現 httpd.conf 檔案中缺少以下項目

<Files *.php>
SetOutputFilter PHP
SetInputFilter PHP
LimitRequestBody 524288 (最大大小,以位元組為單位)
</Files>

新增此項目後,一切運作順利。

- Oli Jon, 冰島
6
warwickbarnes at yahoo dot co dot uk
19 年前
您可能會在使用 Microsoft IIS 上使用 PHP 時遇到以下問題:即使所有資料夾權限似乎都正確,move_uploaded_file 函數也會出現權限遭拒錯誤。我必須設定以下內容才能使其正常運作

1. 通過 IIS 管理主控台設定資料夾的寫入權限。
2. 設定資料夾安全性設定中 IUSR_'server' 的寫入權限。
3. 設定資料夾安全性設定中「網域使用者」的寫入權限。

需要第三個設定是因為我的應用程式本身位於安全資料夾中 - 使用驗證 (基本或 Windows 整合) 來識別使用者。當上傳發生時,IIS 似乎會檢查這些使用者是否具有資料夾的寫入權限,而不僅僅是 Web 伺服器 (IUSR_'server') 是否具有存取權。

此外,請記住將 IIS 管理主控台中的「執行權限」設定為「無」,這樣人們就無法上傳腳本檔案然後執行它。(也建議對上傳的檔案進行其他檢查,但「執行無」是一個好的開始。)
4
therhinoman at hotmail dot com
20 年前
如果您的上傳腳本僅用於上傳圖像,則可以使用圖像函數 getimagesize() (不需要 GD 圖像庫) 來確保您確實獲得了圖像,並篩選圖像類型。

<?php getimagesize($file); ?>

...如果檔案不是圖像或無法存取,則會傳回 false,否則將傳回一個陣列...

<?php
$file
= 'somefile.jpg';

# 假設您已經採取了一些其他的預防措施
# 例如檢查檔案副檔名...

$result_array = getimagesize($file);

if (
$result_array !== false) {
$mime_type = $result_array['mime'];
switch(
$mime_type) {
case
"image/jpeg":
echo
"檔案為 jpeg 類型";
break;
case
"image/gif":
echo
"檔案為 gif 類型";
break;
default:
echo
"檔案是圖像,但不是 gif 或 jpeg 類型";
}
} else {
echo
"檔案不是有效的圖像檔案";
}
?>

使用此函數以及此頁面中提及的其他函數,可以使圖像上傳幾乎萬無一失。

請參閱 https://php.dev.org.tw/manual/en/function.getimagesize.php 以取得支援的圖像類型和更多資訊。
3
maya_gomez ~ at ~ mail ~ dot ~ ru
20 年前
當您上傳檔案時,$_FILES['file']['name'] 包含其原始名稱,該名稱已轉換為伺服器的預設字元集。
如果名稱包含預設字元集中不存在的字元,則轉換會失敗,並且 $_FILES['file']['name'] 會保留原始字元集。

當我從 windows-1251 環境上傳到 koi8-r 時,我遇到了這種行為。如果檔案名稱包含數字符號「?」 (0xb9),只要 koi8-r 中沒有這樣的字元,它就不會被轉換。

我使用的解決方法

<?php
if (strstr ($_FILES['file']['name'], chr(0xb9)) != "")
{
$_FILES['file']['name'] = iconv (
"windows-1251",
"koi8-r",
str_replace (chr(0xb9), "N.", $_FILES['file']['name']));
};
?>
2
mariodivece at bytedive dot com
19 年前
只想指出一個可能對某些人來說很重要的細節

當使用 base64_encode 將二進制資料儲存在資料庫中時,您會將資料大小增加 1.33 倍。有一種更好的方法可以直接儲存資料。嘗試以下操作

<?php $data = mysql_real_escape_string($data); ?>

這將使資料保持不變,並以正確的方式格式化,並準備好直接插入到 MySQL 語句中,而不會浪費空間。

順便說一句,我想感謝 therebechips 在資料區塊方面提供的出色建議。
1
djot at hotmail dot com
19 年前
-
請注意透過以下方式設定 max_file_size
<?php ini_get('upload_max_filesize'); ?>

ini_get 可能會傳回像「2M」這樣的值,這會導致上傳無法運作。

這是我遇到的「不可以」的情況

<?php
$form
= '<input type="hidden" name="MAX_FILE_SIZE" value=".ini_get('upload_max_filesize')." />';
?>

檔案已上傳到伺服器,但隨後沒有任何上傳資訊,甚至沒有錯誤訊息。$_FILES 完全是空的。

djot
-
1
Leevi at izilla dot com dot au
19 年前
這可能會幫助剛接觸檔案上傳的新手.. 我是聽取朋友的建議才解決這個問題的..

如果您正在使用
- Windows XP
- IIS 5
- PHP 5

如果您在檔案上傳時持續遇到權限錯誤...而且您已經發誓您在 IIS 中設定了目錄的寫入權限...

請仔細檢查
a) 在 Windows 檔案總管中,點擊 工具 > 資料夾選項
點擊 檢視 索引標籤
向下捲動到「使用簡易檔案共用 (建議使用)」
取消勾選此方塊

b) 找到您想要上傳至伺服器上的資料夾
c) 點擊 內容,然後點擊 安全性 索引標籤
d) 確保已勾選適當的寫入設定。

您可能想嘗試將「Everyone」設定為具有完整權限....

請注意,這樣做會讓您的伺服器出現很大的安全漏洞....

希望這有幫助

Leevi Graham
-3
Phil Ciebiera
15 年前
在利用 IIS 的 Microsoft 平台上,您可能會遇到一種情況,即在移動上傳的檔案後,匿名網路使用者在未被提示驗證身份的情況下無法訪問內容...

原因在於,上傳的檔案會繼承 php.ini 中 upload_tmp_dir 指令指定的目錄的權限。如果未設定此指令,則會使用預設的 C:\Windows\Temp。

您可以通過授予 IUSR_[伺服器名稱] 使用者對您的臨時上傳目錄的讀取權限來解決此問題,這樣在您 move_uploaded_file 後,權限將會被正確設定。

為了安全起見,最好將上傳目錄的執行權限設定為不包含可執行檔。
要完成此操作
- 開啟 IIS 管理員
- 瀏覽至將放置上傳檔案的相關站點目錄
- 右鍵點擊該資料夾,然後選擇 內容
- 在出現的對話框的「目錄」索引標籤中,將「執行權限」設定為「無」

我花了一段時間才弄清楚,所以我希望這能為其他人節省一些時間。
-3
jahajee
16 年前
嗨,我在 upload_max_filesize 上遇到了困難,如果您設定的最大檔案大小小於 PHP 設定,那麼您的錯誤報告腳本將只能在您設定的最大檔案大小與 PHP 設定的最大大小之間的差異範圍內工作。因此,如果上傳的檔案超過了 PHP 最大檔案大小,PHP 會突然終止,而不會留下任何錯誤痕跡,也就是說,它的行為就像沒有上傳任何檔案,因此不會報告任何錯誤。當然,如果上傳檔案對於表單是可選的,那麼上傳較大檔案的使用者將不會收到任何錯誤,並且表單仍然會被處理,只是沒有該檔案而已。
GET 的方法不能用於可選上傳。即使在錯誤中也找不到幫助。請小心可選上傳。
jahajee
To Top