php.ini相關參數
file_uploads
是否允許PHP上傳文件,默認爲ON
。
upload_tmp_dir
上傳文件在處理之前,必須先上傳到服務器上的某個臨時文件夾;
此參數就是決定臨時目錄的路徑,此目錄需要有讀寫權限。
一般不需要改。
max_input_time
對POST/GET/PUT方式接收數據的時間限制,單位s。
max_execution_time
等待腳本執行完畢的最長時間,單位s。
如果需要上傳大文件,此配置數值不能過小!
upload_max_filesize
允許上傳文件的最大值,默認爲2MB。
post_max_size
控制POST方式提交表單時,允許接收的最大數據量(MB);
由於POST數據除了文件,還有可能包含其他表單數據,此值應大於upload_max_filesize的值。
memory_limit
PHP的內存使用上限,避免腳本過量使用系統資源;
由於上傳是內存處理得數據中除了POST數據外可能包含其他數據,此值應大於post_max_size的值。
相關錯誤
單文件上傳
html代碼
<form action="upload.php" method="post" enctype="multipart/form-data">
<input name="upload" type="file">
<input type="submit" value="上傳文件">
</form>
php代碼
1.我們通過$_FILES
獲取上傳的文件信息;
2.它返回的值是一個數組:
[upload] => [
[name] => 文件名
[type] => 文件類型
[tmp_name] => 臨時路徑 + 臨時文件名
[error] => 錯誤類型
[size] => 大小
]
3.具體代碼如下
// 1.獲取錯誤碼
$error = $_FILES['upload']['error'];
// 2.臨時路徑名 ↓這裏的key和input的name一致
$tmp_name = $_FILES['upload']['tmp_name'];
// 3.目的路徑名
$final_name = './upload/'.$_FILES['upload']['name'];
// 4.錯誤校驗
if($error){
// 5.根據錯誤碼,返回相應錯誤信息
switch($error){
case 1:
case 2:
echo "文件大小超出限制";
case 3:
echo "文件上傳不完整";
case 4:
echo "未選中上傳文件";
}
// 6.如果沒有錯誤
}else{
// 7.移動上傳的文件
$result = move_uploaded_file($tmp_name, $final_name);
// 8.輸出信息
echo $result ? "上傳成功" : "上傳失敗";
}