
批改狀態(tài):合格
老師批語:文件上傳需要前后端的配合, 其實原理是很簡單的, 涉及到的函數(shù)并不多
<?php
// printf("<pre>%s</pre>",print_r($_FILES,true));
class upException extends Exception
{
public function __toString()
{
return '錯誤信息:'.$this->message.';錯誤代碼:'.$this->code;
}
}
try{
// echo $type;
// echo $name,$type,$tmp_name,$error,$size;
switch($error)
{
case UPLOAD_ERR_OK:
// var_dump(trim(strstr($type,'/'),'/'));
// var_dump(trim(strstr($type,'/',true),'/')!=='jpeg');
$ty=trim(strstr($type,'/'),'/');
if($ty==='jpeg'){
if(file_exists($tmp_name)&&is_uploaded_file($tmp_name))
{
$obj_type=$ty;
$obj_file='images/'.time().'.'.$obj_type;
move_uploaded_file($tmp_name,$obj_file);
}
exit("<script>alert('上傳成功');location.href='demo1.php'</script>");
}else{
exit("<script>alert('格式不正確,請重新上傳!');location.href='demo1.php'</script>");
}
break;
case UPLOAD_ERR_INI_SIZE:
throw new upException('文夾過大,超過php限制',1);
break;
case UPLOAD_ERR_FORM_SIZE:
throw new upException('文件過大,超過表單限制',2);
break;
case UPLOAD_ERR_PARTIAL:
throw new upException('上傳文件不完整',4);
break;
case UPLOAD_ERR_NO_FILE:
throw new upException('沒有文夾上傳',5);
break;
case UPLOAD_ERR_NO_TMP_DIR:
throw new upException('無臨時目錄',6);
break;
case UPLOAD_ERR_CANT_WRITE:
throw new upException('權(quán)限不夠,文件寫入失敗',7);
break;
default:
echo "未知錯誤";
}}catch(upException $e){
echo $e;
}
<?php
// printf("<pre>%s</pre>",print_r($_FILES,true));
class upException extends Exception
{
public function __toString()
{
return '錯誤信息:'.$this->message.';錯誤代碼:'.$this->code;
}
}
foreach($_FILES as $file){
extract($file);
// echo $name;
try{
// echo $type;
// echo $name,$type,$tmp_name,$error,$size;
switch($error)
{
case UPLOAD_ERR_OK:
// var_dump(trim(strstr($type,'/'),'/'));
// var_dump(trim(strstr($type,'/',true),'/')!=='jpeg');
$ty=trim(strstr($type,'/'),'/');
if($ty==='jpeg'){
if(file_exists($tmp_name)&&is_uploaded_file($tmp_name))
{
$obj_type=$ty;
$obj_file='images/'.trim($name,'.jpg').time().'.'.$obj_type;
// echo $obj_file,'<br>';
move_uploaded_file($tmp_name,$obj_file);
}
}else{
echo ("<script>alert('格式不正確,請重新上傳!');location.href='demo2.php'</script>");
}
break;
case UPLOAD_ERR_INI_SIZE:
throw new upException("{$name}文夾過大,超過php限制",1);
break;
case UPLOAD_ERR_FORM_SIZE:
throw new upException("{$name}文件過大,超過表單限制",2);
break;
case UPLOAD_ERR_PARTIAL:
throw new upException("{$name}上傳文件不完整",4);
break;
case UPLOAD_ERR_NO_FILE:
throw new upException("{$name}沒有文夾上傳",5);
break;
case UPLOAD_ERR_NO_TMP_DIR:
throw new upException("{$name}無臨時目錄",6);
break;
case UPLOAD_ERR_CANT_WRITE:
throw new upException("{$name}權(quán)限不夠,文件寫入失敗",7);
break;
default:
echo "未知錯誤";
}
// exit("<script>alert('上傳成功');location.href='demo2.php'</script>");
}catch(upException $e){
echo ("<script>alert('{$e}');</script>");
}}
exit("<script>alert('上傳完畢!');location.href='demo2.php'</script>");
<?php
// printf("<pre>%s</pre>",print_r($_FILES,true));
// die();
class upException extends Exception
{
public function __toString()
{
return '錯誤信息:'.$this->message.';錯誤代碼:'.$this->code;
}
}
$files=$_FILES['my_file'];
foreach($files['error'] as $key=>$value){
try{
switch($value)
{
case UPLOAD_ERR_OK:
// var_dump(trim(strstr($type,'/'),'/'));
// var_dump(trim(strstr($type,'/',true),'/')!=='jpeg');
$ty=trim(strstr($files['type'][$key],'/'),'/');
if($ty==='jpeg'){
if(file_exists($files['tmp_name'][$key])&&is_uploaded_file($files['tmp_name'][$key]))
{
$obj_type=$ty;
$obj_file='images/'.trim($files['name'][$key],'.jpg').time().'.'.$obj_type;
// echo $obj_file,'<br>';
move_uploaded_file($files['tmp_name'][$key],$obj_file);
}
}else{
echo ("<script>alert('{$files['name'][$key]}格式不正確,請重新上傳!');</script>");
}
break;
case UPLOAD_ERR_INI_SIZE:
throw new upException("{$files['name'][$key]}文夾過大,超過php限制",1);
break;
case UPLOAD_ERR_FORM_SIZE:
throw new upException("{$files['name'][$key]}文件過大,超過表單限制",2);
break;
case UPLOAD_ERR_PARTIAL:
throw new upException("{$files['name'][$key]}上傳文件不完整",4);
break;
case UPLOAD_ERR_NO_FILE:
throw new upException("{$files['name'][$key]}沒有文夾上傳",5);
break;
case UPLOAD_ERR_NO_TMP_DIR:
throw new upException("{$files['name'][$key]}無臨時目錄",6);
break;
case UPLOAD_ERR_CANT_WRITE:
throw new upException("{$files['name'][$key]}權(quán)限不夠,文件寫入失敗",7);
break;
default:
echo "未知錯誤";
}}catch (upException $e){
echo ("<script>alert('{$e}');</script>");
}}
exit("<script>alert('上傳完畢!');location.href='demo3.php'</script>");
1、上傳文件信息關(guān)鍵字:$_FILES
(name、type、tmp_name、error、size);
2、把上傳文夾從臨時目錄移動過到目標(biāo)目錄:move_uploaded_file('tmp_name','目標(biāo)文夾目錄')
;
3、is_uploaded_file();
判斷上傳文件的合法性
4、文件前端以表單的形式上傳:
<form action="act3.php" method="POST" enctype="multipart/form-data">
//文件上傳,上傳方式:post,上傳編碼:multipart/form-data
<fieldset>
<legend>文件上傳</legend>
//隱藏域,用來限制上傳文件大小
<input type="hidden" name="MAX_FILE_SIZE" value="10000000">
//上傳文件:multiple:多選
<input type="file" name="my_file[]" multiple>
<button>上傳</button>
</fieldset>
</form>
5、在上傳文件時:需查看設(shè)置php.ini中:file_uploads
、upload_tmp_dir
、max_file_uploads
、post_max_size
、upload_max_filesize
等相關(guān)設(shè)置
6、php常用函數(shù):strstr($str,'分割字符',true|flase)
:分割字符trim($str,'去掉的字符')
:去掉字符兩端的不需要的字符
file_exists($file);
檢測文件試問存在
7、script函數(shù):alert('提示內(nèi)容')
:單傳提示函數(shù);location.href=''
;自動跳轉(zhuǎn)至……;
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號