在使用Zend Sutdio10.6設(shè)置斷點(diǎn)并調(diào)試上面這段PHP代碼時(shí)我發(fā)現(xiàn)“if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {”這行代碼里面的代碼塊沒(méi)有執(zhí)行,于是查看了超全局變量$_FILES['screenshot']['tmp_name']的值為空,然后我在這行代碼前以JSON格式打印出$_FILES變量的值,如下:<\/span>{\"screenshot\":{\"name\":\"Penguins.jpg\",\"type\":\"\",\"tmp_name\":\"\",\"error\":2,\"size\":0}}<\/pre><\/p>
相應(yīng)的運(yùn)行截圖如下:<\/span><\/span><\/p>
<\/span><\/p>然后我查詢$_FILES['screenshot']['error']為2,上網(wǎng)查詢了一下,關(guān)于$_FILES超級(jí)全局變量的介紹<\/span>大體如下:<\/span><\/span><\/p><\/span><\/span><\/p>PHP編程語(yǔ)言中的常見(jiàn)的$_FILES系統(tǒng)函數(shù)用法有:<\/span><\/p>$_FILES['myFile']['name'] 顯示客戶端文件的原名稱(chēng)。<\/span><\/p>$_FILES['myFile']['type'] 文件的 MIME 類(lèi)型,例如\"image\/gif\"。<\/span><\/p>$_FILES['myFile']['size'] 已上傳文件的大小,單位為字節(jié)。<\/span><\/p>$_FILES['myFile']['tmp_name'] 儲(chǔ)存的臨時(shí)文件名,一般是系統(tǒng)默認(rèn)。<\/span><\/p>$_FILES['myFile']['error'] 該文件上傳相關(guān)的錯(cuò)誤代碼。以下為不同代碼代表的意思:<\/span><\/p>0:文件上傳成功。<\/span><\/p>1:超過(guò)了文件大小php.ini中即系統(tǒng)設(shè)定的大小。<\/span><\/p>2:超過(guò)了文件大小<\/span><\/p>MAX_FILE_SIZE 選項(xiàng)指定的值。<\/span><\/p>3;:文件只有部分被上傳。<\/span><\/p>4:沒(méi)有文件被上傳。<\/span><\/p>5:上傳文件大小為0。<\/span><\/p>
另外,查詢PHP參考手冊(cè)關(guān)于move_uploaded_file函數(shù)的介紹如下:<\/span><\/p><\/p>
move_uploaded_file(PHP 4 >= 4.0.3, PHP 5)move_uploaded_file — 將上傳的文件移動(dòng)到新位置說(shuō)明bool move_uploaded_file ( string $filename , string $destination )本函數(shù)檢查并確保由 filename 指定的文件是合法的上傳文件(即通過(guò) PHP 的 HTTP POST 上傳機(jī)制所上傳的)。如果文件合法,則將其移動(dòng)為由 destination 指定的文件。 這種檢查顯得格外重要,如果上傳的文件有可能會(huì)造成對(duì)用戶或本系統(tǒng)的其他用戶顯示其內(nèi)容的話。 參數(shù)filename上傳的文件的文件名。 destination移動(dòng)文件到這個(gè)位置。 返回值成功時(shí)返回 TRUE。 如果 filename 不是合法的上傳文件,不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。 如果 filename 是合法的上傳文件,但出于某些原因無(wú)法移動(dòng),不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。此外還會(huì)發(fā)出一條警告。 <\/pre>
<\/p>
范例<\/h3>
<\/p>
<\/p>
Example #1 Uploading multiple files<\/strong><\/p><\/p> $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES[\"pictures\"][\"tmp_name\"][$key]; $name = $_FILES[\"pictures\"][\"name\"][$key]; move_uploaded_file($tmp_name, \"$uploads_dir\/$name\"); }}?> <\/pre>原因終于找到了,是因?yàn)槲疑蟼髁艘粋€(gè)超過(guò)32768Bytes即32KB大小的Penguins.jpg文件導(dǎo)致出現(xiàn)<\/span>$_FILES['screenshot']['error']為2的錯(cuò)誤,并且$_FILES['screenshot']['tmp_name']為空,move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)函數(shù)調(diào)用時(shí)返回FALSE,if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {?
? ...
?}代碼塊沒(méi)有執(zhí)行。<\/span><\/span>
? ? ?<\/p>\n
\n \n \n \n \n <\/div>"}
首頁(yè)
后端開(kāi)發(fā)
php教程
PHP上傳文件超過(guò)文件最大限制羅致無(wú)法上傳成功
PHP上傳文件超過(guò)文件最大限制羅致無(wú)法上傳成功
Jun 13, 2016 pm 12:01 PM
gt
lt
name
quot
screenshot
PHP上傳文件超過(guò)文件最大限制導(dǎo)致無(wú)法上傳成功
? ? ?最近在學(xué)習(xí)《HeadFirst PHP & MySQL》一書(shū)的第5章“使用存儲(chǔ)在文件中的數(shù)據(jù)”,做一個(gè)文件上傳的應(yīng)用時(shí),出現(xiàn)了錯(cuò)誤,就是文件無(wú)法成功上傳。這個(gè)問(wèn)題困擾了我很久,不過(guò)還好最后終于解決了。原因是我上傳的圖片文件大小超過(guò)了HTML 表單中MAX_FILE_SIZE 選項(xiàng)指定的值32768Bytes即32KB導(dǎo)致無(wú)法上傳成功。
? ? 我使用了XAMPP(Apache + MySQL + PHP + Perl)集成開(kāi)發(fā)包和Zend Studio 10.6作為PHP IDE開(kāi)發(fā)環(huán)境,另外關(guān)于PHP調(diào)試我采用了XDebug,在Zend Studio10.6中配置Xdebug的PHP調(diào)試環(huán)境我參考了博文Zend Studio 10.5 與 XDebug 調(diào)試| Zend Debugger 說(shuō)明 Drupal 源代碼 (一)一文。
????? 相應(yīng)的文件上傳示例PHP代碼addscore.php如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Guitar Wars - Add Your High Score</title> <link rel="stylesheet" type="text/css" href="style.css" /></head><body> <h2>Guitar Wars - Add Your High Score</h2><?php require_once 'appvars.php'; require_once 'connectvars.php'; if (isset($_POST['submit'])) { // Grab the score data from the POST $name = $_POST['name']; $score = $_POST['score']; $screenshot = $_FILES['screenshot']['name']; if (!empty($name) && !empty($score) && !empty($screenshot)) { // Move the file to the target upload folder $target = GW_UPLOADPATH . $screenshot; echo json_encode($_FILES); if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) { // Connect to the database $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die('Error Connecting to MySQL Database!'); // Write the data to the database $query = "INSERT INTO guitarwars VALUES (0, NOW(), '$name', '$score','$screenshot')"; mysqli_query($dbc, $query) or die('Error querying database;'); // Confirm success with the user echo '<p>Thanks for adding your new high score!</p>'; echo '<p><strong>Name:</strong> ' . $name . '<br />'; echo '<strong>Score:</strong> ' . $score; echo '<img src="/static/imghw/default1.png" data-src="/img/2014/07/09/143017574.jpg" class="lazy" alt="Score image" /></p>'; echo '<p><a href="index.php"><< Back to high scores</a></p>'; // Clear the score data to clear the form $name = ""; $score = ""; $screenshot = ""; mysqli_close($dbc); } } else { echo '<p class="error">Please enter all of the information to add your high score.</p>'; } }?> <hr /> <form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="MAX_FILE_SIZE" value="32768" /> <label for="name">Name:</label> <input type="text" id="name" name="name" value="<?php if (!empty($name)) echo $name; ?>" /><br /> <label for="score">Score:</label> <input type="text" id="score" name="score" value="<?php if (!empty($score)) echo $score; ?>" /><br /> <label for="screeshot">ScreenShot</label> <input type="file" id="screenshot" name="screenshot" /> <hr /> <input type="submit" value="Add" name="submit" /> </form></body> </html>
在使用Zend Sutdio10.6設(shè)置斷點(diǎn)并調(diào)試上面這段PHP代碼時(shí)我發(fā)現(xiàn)“if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {”這行代碼里面的代碼塊沒(méi)有執(zhí)行,于是查看了超全局變量$_FILES['screenshot']['tmp_name']的值為空,然后我在這行代碼前以JSON格式打印出$_FILES變量的值,如下:{"screenshot":{"name":"Penguins.jpg","type":"","tmp_name":"","error":2,"size":0}}
相應(yīng)的運(yùn)行截圖如下:

然后我查詢$_FILES['screenshot']['error']為2,上網(wǎng)查詢了一下,關(guān)于$_FILES超級(jí)全局變量的介紹大體如下:
PHP編程語(yǔ)言中的常見(jiàn)的$_FILES系統(tǒng)函數(shù)用法有:$_FILES['myFile']['name'] 顯示客戶端文件的原名稱(chēng)。$_FILES['myFile']['type'] 文件的 MIME 類(lèi)型,例如"image/gif"。$_FILES['myFile']['size'] 已上傳文件的大小,單位為字節(jié)。$_FILES['myFile']['tmp_name'] 儲(chǔ)存的臨時(shí)文件名,一般是系統(tǒng)默認(rèn)。$_FILES['myFile']['error'] 該文件上傳相關(guān)的錯(cuò)誤代碼。以下為不同代碼代表的意思:0:文件上傳成功。1:超過(guò)了文件大小php.ini中即系統(tǒng)設(shè)定的大小。2:超過(guò)了文件大小MAX_FILE_SIZE 選項(xiàng)指定的值。3;:文件只有部分被上傳。4:沒(méi)有文件被上傳。5:上傳文件大小為0。另外,查詢PHP參考手冊(cè)關(guān)于move_uploaded_file函數(shù)的介紹如下:
move_uploaded_file(PHP 4 >= 4.0.3, PHP 5)move_uploaded_file — 將上傳的文件移動(dòng)到新位置說(shuō)明bool move_uploaded_file ( string $filename , string $destination )本函數(shù)檢查并確保由 filename 指定的文件是合法的上傳文件(即通過(guò) PHP 的 HTTP POST 上傳機(jī)制所上傳的)。如果文件合法,則將其移動(dòng)為由 destination 指定的文件。 這種檢查顯得格外重要,如果上傳的文件有可能會(huì)造成對(duì)用戶或本系統(tǒng)的其他用戶顯示其內(nèi)容的話。 參數(shù)filename上傳的文件的文件名。 destination移動(dòng)文件到這個(gè)位置。 返回值成功時(shí)返回 TRUE。 如果 filename 不是合法的上傳文件,不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。 如果 filename 是合法的上傳文件,但出于某些原因無(wú)法移動(dòng),不會(huì)出現(xiàn)任何操作, move_uploaded_file() 將返回 FALSE。此外還會(huì)發(fā)出一條警告。
范例
Example #1 Uploading multiple files
<?php$uploads_dir = '/uploads';foreach ($_FILES["pictures"]["error"] as $key => $error) { if ($error == UPLOAD_ERR_OK) { $tmp_name = $_FILES["pictures"]["tmp_name"][$key]; $name = $_FILES["pictures"]["name"][$key]; move_uploaded_file($tmp_name, "$uploads_dir/$name"); }}?>
原因終于找到了,是因?yàn)槲疑蟼髁艘粋€(gè)超過(guò)32768Bytes即32KB大小的Penguins.jpg文件導(dǎo)致出現(xiàn)$_FILES['screenshot']['error']為2的錯(cuò)誤,并且$_FILES['screenshot']['tmp_name']為空,move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)函數(shù)調(diào)用時(shí)返回FALSE,if (move_uploaded_file($_FILES['screenshot']['tmp_name'], $target)) {?
? ...
?}代碼塊沒(méi)有執(zhí)行。? ? ?
本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
華為GT3 Pro和GT4的差異是什么?
Dec 29, 2023 pm 02:27 PM
許多用戶在選擇智能手表的時(shí)候都會(huì)選擇的華為的品牌,其中華為GT3pro和GT4都是非常熱門(mén)的選擇,不少用戶都很好奇華為GT3pro和GT4有什么區(qū)別,下面就就給大家介紹一下二者。華為GT3pro和GT4有什么區(qū)別一、外觀GT4:46mm和41mm,材質(zhì)是玻璃表鏡+不銹鋼機(jī)身+高分纖維后殼。GT3pro:46.6mm和42.9mm,材質(zhì)是藍(lán)寶石玻璃表鏡+鈦金屬機(jī)身/陶瓷機(jī)身+陶瓷后殼二、健康GT4:采用最新的華為T(mén)ruseen5.5+算法,結(jié)果會(huì)更加的精準(zhǔn)。GT3pro:多了ECG心電圖和血管及安
修復(fù):截圖工具在 Windows 11 中不起作用
Aug 24, 2023 am 09:48 AM
為什么截圖工具在Windows11上不起作用了解問(wèn)題的根本原因有助于找到正確的解決方案。以下是截圖工具可能無(wú)法正常工作的主要原因:對(duì)焦助手已打開(kāi):這可以防止截圖工具打開(kāi)。應(yīng)用程序損壞:如果截圖工具在啟動(dòng)時(shí)崩潰,則可能已損壞。過(guò)時(shí)的圖形驅(qū)動(dòng)程序:不兼容的驅(qū)動(dòng)程序可能會(huì)干擾截圖工具。來(lái)自其他應(yīng)用程序的干擾:其他正在運(yùn)行的應(yīng)用程序可能與截圖工具沖突。證書(shū)已過(guò)期:升級(jí)過(guò)程中的錯(cuò)誤可能會(huì)導(dǎo)致此issu簡(jiǎn)單的解決方案這些適合大多數(shù)用戶,不需要任何特殊的技術(shù)知識(shí)。1.更新窗口和Microsoft應(yīng)用商店應(yīng)用程
如何修復(fù)無(wú)法連接到iPhone上的App Store錯(cuò)誤
Jul 29, 2023 am 08:22 AM
第1部分:初始故障排除步驟檢查蘋(píng)果的系統(tǒng)狀態(tài):在深入研究復(fù)雜的解決方案之前,讓我們從基礎(chǔ)知識(shí)開(kāi)始。問(wèn)題可能不在于您的設(shè)備;蘋(píng)果的服務(wù)器可能會(huì)關(guān)閉。訪問(wèn)Apple的系統(tǒng)狀態(tài)頁(yè)面,查看AppStore是否正常工作。如果有問(wèn)題,您所能做的就是等待Apple修復(fù)它。檢查您的互聯(lián)網(wǎng)連接:確保您擁有穩(wěn)定的互聯(lián)網(wǎng)連接,因?yàn)椤盁o(wú)法連接到AppStore”問(wèn)題有時(shí)可歸因于連接不良。嘗試在Wi-Fi和移動(dòng)數(shù)據(jù)之間切換或重置網(wǎng)絡(luò)設(shè)置(“常規(guī)”>“重置”>“重置網(wǎng)絡(luò)設(shè)置”>設(shè)置)。更新您的iOS版本:
screenshot是什么文件夾
Feb 27, 2023 am 10:48 AM
screenshot是游戲截圖專(zhuān)用的文件夾,用F12即可截圖,默認(rèn)是bmp格式的,而bmp格式是Windows操作系統(tǒng)中的標(biāo)準(zhǔn)圖像文件格式,能夠被多種Windows應(yīng)用程序所支持。
php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出,該如何解決
Jun 13, 2016 am 10:23 AM
php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出php提交表單通過(guò)后,彈出的對(duì)話框怎樣在當(dāng)前頁(yè)彈出而不是在空白頁(yè)彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁(yè)彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code
watch4pro好還是gt好
Sep 26, 2023 pm 02:45 PM
watch4pro和gt各自具有不用的特點(diǎn)和適用場(chǎng)景,如果注重功能的全面性、高性能和時(shí)尚外觀,同時(shí)愿意承擔(dān)較高的價(jià)格,那么Watch 4 Pro可能更適合。如果對(duì)功能要求不高,更注重電池續(xù)航和價(jià)格的合理性,那么GT系列可能更適合。最終的選擇應(yīng)根據(jù)個(gè)人需求、預(yù)算和喜好來(lái)決定,建議在購(gòu)買(mǎi)前仔細(xì)考慮自己的需求,并參考各種產(chǎn)品的評(píng)測(cè)和比較,以做出更明智的選擇。
如何使用 iPadOS 17.4 優(yōu)化 iPad 電池壽命
Mar 21, 2024 pm 10:31 PM
如何使用iPadOS17.4優(yōu)化iPad電池壽命延長(zhǎng)電池續(xù)航時(shí)間是移動(dòng)設(shè)備體驗(yàn)的關(guān)鍵,iPad是一個(gè)很好的例子。如果您覺(jué)得iPad電池消耗速度過(guò)快,不用擔(dān)心,在iPadOS17.4中有許多技巧和調(diào)整可以顯著延長(zhǎng)設(shè)備的運(yùn)行時(shí)間。本深入指南的目標(biāo)不僅僅是提供信息,而是改變您使用iPad的方式,增強(qiáng)您的整體電池管理,并確保您可以在無(wú)需充電的情況下更長(zhǎng)時(shí)間地依賴(lài)您的設(shè)備。通過(guò)采用此處概述的做法,您朝著更高效、更謹(jǐn)慎地使用技術(shù)邁出了一步,這些技術(shù)是根據(jù)您的個(gè)人需求和使用模式量身定制的。識(shí)別主要的能量消耗者
php拿不到name怎么辦
Nov 24, 2022 am 09:56 AM
php拿不到name是因?yàn)楫?dāng)表單元素的name和id的值不一樣的時(shí)候,瀏覽器是不能識(shí)別的,其解決辦法:1、檢查部分表單元素和框架元素是否用了name;2、檢查只能賦ID不能賦name的元素;3、針對(duì)多選框checkbox,可使用“join(',', $__POST['name'])”組成數(shù)據(jù)。
See all articles