
批改狀態(tài):合格
老師批語(yǔ):簡(jiǎn)單的文件上傳并不難, 本堂課也是應(yīng)許多同學(xué)一再要求,希望從頭到尾詳細(xì)介紹一下文件上傳的原理與實(shí)現(xiàn), 希望你能幫到大家
目錄
1、html代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上傳文件</title>
</head>
<body>
<form action="demo.php" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>頭像上傳</legend>
<input type="hidden" name='MAX_FILE_SIZE' value=''>
<input type="file" name='user_pic'>
<button>上傳</button>
</fieldset>
</form>
</body>
</html>
2、demo.php代碼:
<?php
// phpinfo();
// print_r($_FILES);
try{
$error_code=$_FILES['user_pic']['error'];
// echo $error_code.'<br>';
// var_dump($error_code);
// echo UPLOAD_ERR_CANT_WRITE;
if ($error_code > UPLOAD_ERR_OK){
switch($error_code){
case UPLOAD_ERR_INI_SIZE:
throw new Exception('文件太大,超過(guò)服務(wù)器接收大小');
break;
case UPLOAD_ERR_FORM_SIZE:
throw new Exception('文件大小超過(guò)網(wǎng)頁(yè)限制大小');
break;
case UPLOAD_ERR_PARTIAL:
throw new Exception('文件上傳不完整');
break;
case UPLOAD_ERR_NO_TMP_DIR:
throw new Exception('沒有找到可以臨時(shí)存儲(chǔ)文件的目錄文件');
break;
case UPLOAD_ERR_CANT_WRITE:
throw new Exception('沒有上傳權(quán)限');
break;
default:
throw new Exception('未知類型錯(cuò)誤');
}
}else{
$upfile=$_FILES['user_pic']['tmp_name'];
// echo $upfile;
$type='pdf';
if (is_uploaded_file($upfile)){
$filetype=pathinfo($_FILES['user_pic']['name'])['extension'];
if ($filetype === $type){
$newupname=__DIR__.'\uploadfile'.DIRECTORY_SEPARATOR.md5($_FILES['user_pic']['name']).time().'.'.$filetype;
echo $newupname;
if(move_uploaded_file($upfile,$newupname)){
echo '<script>alert("上傳成功");location.href="form.html";</script>';
}
}else{
throw new Exception('文件類型不允許上傳,請(qǐng)上傳PDF格式');
}
}else{
throw new Exception('上傳后,文件非法錯(cuò)誤');
}
}
}catch (Exception $e){
echo $e->getMessage();
}
1、html代碼:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上傳文件</title>
</head>
<body>
<form action="demo2.php" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>頭像上傳</legend>
<!-- <input type="hidden" name='MAX_FILE_SIZE' value=''> -->
<input type="file" name='user_pic[]'>
<input type="file" name='user_pic[]'>
<input type="file" name='user_pic[]'>
<!-- <input type="file" name='user_pic[]'> -->
<button>上傳</button>
</fieldset>
</form>
</body>
</html>
2、公共處理函數(shù):代碼
<?php
function verify($file){
try{
$error_code=$file[3];
// echo $error_code.'<br>';
// var_dump($error_code);
// echo UPLOAD_ERR_CANT_WRITE;
if ($error_code > UPLOAD_ERR_OK){
switch($error_code){
case UPLOAD_ERR_INI_SIZE:
throw new Exception('文件太大,超過(guò)服務(wù)器接收大小');
break;
case UPLOAD_ERR_FORM_SIZE:
throw new Exception('文件大小超過(guò)網(wǎng)頁(yè)限制大小');
break;
case UPLOAD_ERR_PARTIAL:
throw new Exception('文件上傳不完整');
break;
case UPLOAD_ERR_NO_TMP_DIR:
throw new Exception('沒有找到可以臨時(shí)存儲(chǔ)文件的目錄文件');
break;
case UPLOAD_ERR_CANT_WRITE:
throw new Exception('沒有上傳權(quán)限');
break;
case UPLOAD_ERR_NO_FILE:
throw new Exception('沒有文件被上傳');
break;
default:
throw new Exception('未知類型錯(cuò)誤');
}
}else{
$upfile=$file[2];
// echo $upfile;
$type=['pdf','doc','txt','xls','ppt','docx','xlsx','pptx'];
if (is_uploaded_file($upfile)){
$filetype=pathinfo($file[0])['extension'];
if (in_array($filetype,$type)){
$newupname=__DIR__.'\uploadfile'.DIRECTORY_SEPARATOR.md5($file[0]).time().'.'.$filetype;
// echo $newupname;
if(move_uploaded_file($upfile,$newupname)){
echo "{$file[0]}:文件上傳成功";
}
}else{
throw new Exception("{$file[0]}文件類型不允許上傳,請(qǐng)上傳office辦公文檔");
}
}else{
throw new Exception('上傳后,文件非法錯(cuò)誤');
}
}
}catch (Exception $e){
echo $e->getMessage();
}
}
3、demo2.php代碼:
<?php
require 'upfunction.php';
// phpinfo();
// print_r($_FILES);
$offices=[];
//
foreach ($_FILES as $file) {
// print_r($file);
for($i=0;$i<count($file['name']);$i++) {
$offices[]=[
$file['name'][$i],
$file['type'][$i],
$file['tmp_name'][$i],
$file['error'][$i],
$file['size'][$i]
];
}
}
$i=0;
foreach ($offices as $office) {
// print_r($office);
verify($office);
echo '<br>';
}
1、知識(shí)點(diǎn):
[name] => user_pic.jpg
[type] => image/jpeg
[tmp_name] => /Applications/MAMP/tmp/php/phprqLCR1
[error] => 0
[size] => 20029
錯(cuò)誤代碼:
3、phpinfo();查詢php的版本信息;
4、pathinfo();
Array
(
[dirname] => 0219
[basename] => demo2.php
[extension] => php
[filename] => demo2
)
5、in_array($value,$array)
:判斷$value是否在$array中,返回布爾值;
6、is_uploaded_file($tmpFile)
:檢測(cè)是否是通過(guò)POST方式上傳的文件, 本質(zhì)上就是檢測(cè)臨時(shí)文件是否是一個(gè)合法的文件;
7、move_uploaded_file($tmpFile, $destName)
: 把$tmpFile的臨時(shí)文件移動(dòng)到$destName文件中,一般要跟上絕對(duì)路徑;防止找不到目標(biāo)文件目錄;
8、<script>alert("上傳成功");location.href="form1.html";</script>
彈窗提示,并返回指定頁(yè)面;
10、html標(biāo)簽:
<!-- action:處理上傳腳本, method: 必須是POST, multipart/form-data:允許接收表單提交的文件 -->
<form action="demo3.php" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>頭像上傳</legend>
<!-- 這個(gè)上傳文件大小的限制字段,必須寫到file字段的前面 -->
<input type="hidden" name="MAX_FILE_SIZE" value="600">
<input type="file" name="user_pic">
<!-- <input type="file" name="user_pic1">
<input type="file" name="user_pic2">
<input type="file" name="user_pic3"> -->
<button>上傳</button>
</fieldset>
</form>
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)