ユーザーアバターのアップロード
1. ユーザー アップロード アバター ページを編集するときは、次の 2 つの點(diǎn)に注意してください:
a. 投稿モードで送信する必要があります。ファイルはバイナリ エンコードされており、バイナリ エンコードは URL アドレス バーで送信できないため、get メソッドを使用して
b を送信することはできません。enctype="multipart/form-data" をデータをアップロードするようにブラウザに指示します。 ファイル データです。
portrait.php コードは次のとおりです。
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/2/28 0028 * Time: 下午 1:18 */ header('Content-type:text/html;charset=utf-8'); $info=array('id'=>1,'name'=>'張三'); ?> <form action="" method="post" enctype="multipart/form-data"> <h2>上傳用戶頭像</h2> <p>用戶姓名:<?php echo $info['name'];?></p> <p>現(xiàn)有頭像:</p><img src="<?php echo './'.$info['id'].'.jpg?rand='.rand() ;?>"/><br> 上傳頭像:<input name="pic" type="file"><br> <!--文件上傳表單--> <input type="submit" value="保存頭像"> </form>
上記のコードは、ユーザー ID に基づいてアップロードされた畫像の名前を変更することです。たとえば、ユーザー ID が 1、保存された畫像名が 1.jpg;? "?rand=rand()" はキャッシュを防ぐための操作です。onerror の値は "this.src='./default.jpg'" で、畫像がない場合にデフォルトで畫像が表示されることを意味します。
2、基本的なユーザー情報(bào)を表示##<?php $info=array('id' =>1,'name'=>'Zhang San'); ?>
#<?php echo '<pre>';print_r($_FILES);echo '</pre>';?>
4、アップロードされた畫像を受信して??処理します
<?php
if(!empty($_FILES['pic'])){
$pic_info=$_FILES['pic'];
if($pic_info['error']>0){
$error_msg='上傳錯(cuò)誤:';
switch ($pic_info['error']){
case 1:$error_msg.="文件大小超過了php.ini中upload_max_filesize選項(xiàng)限制的值";
break;
case 2:$error_msg.="文件大小超過了表單中max_file_size選項(xiàng)指定的值!";
break;
case 3:$error_msg.="文件只有部分被上傳!";
break;
case 4:$error_msg.="沒有文件被上傳!";
break;
case 6:$error_msg.="找不到臨時(shí)文件夾!";
break;
case 7:$error_msg.="文件寫入失敗";
break;
default:$error_msg.='未知錯(cuò)誤!';break;
}
echo $error_msg;
return false;
}
//獲取文件上傳的類型
// $type=substr(strrchr($pic_info['name'],'.'),1);
// if($type!=='jpg'){
// echo '圖像類型不符合要求,允許的類型為:jpg';
// return false;
// }
$type=$pic_info['type'];
$allow_type=array('image/jpeg','image/png','image/gif');
if(!in_array($type,$allow_type)){
echo '圖像類型不符合要求,允許的類型為:'.implode(',',$allow_type);
return false;
}
//使用用戶ID為上傳文件命名
$new_file=$info['id'].'.jpg';
//設(shè)置上傳文件保存路徑
$filename='./'.$new_file;
//頭像上傳的臨時(shí)目錄成功,將其保存到腳本所在目錄下的img文件夾中
if(!move_uploaded_file($pic_info['tmp_name'],$filename)){
echo '頭像上傳失敗';
return false;
}
}
5、完全なコード表示:
portrait.php :<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/2/28 0028
* Time: 下午 1:18
*/
header('Content-type:text/html;charset=utf-8');
$info=array('id'=>1,'name'=>'張三');
echo '<pre>';
print_r($_FILES);
echo '</pre>';
//接收并處理上傳圖像
if(!empty($_FILES['pic'])){
$pic_info=$_FILES['pic'];
if($pic_info['error']>0){
$error_msg='上傳錯(cuò)誤:';
switch ($pic_info['error']){
case 1:$error_msg.="文件大小超過了php.ini中upload_max_filesize選項(xiàng)限制的值";
break;
case 2:$error_msg.="文件大小超過了表單中max_file_size選項(xiàng)指定的值!";
break;
case 3:$error_msg.="文件只有部分被上傳!";
break;
case 4:$error_msg.="沒有文件被上傳!";
break;
case 6:$error_msg.="找不到臨時(shí)文件夾!";
break;
case 7:$error_msg.="文件寫入失敗";
break;
default:$error_msg.='未知錯(cuò)誤!';break;
}
echo $error_msg;
return false;
}
//獲取文件上傳的類型
// $type=substr(strrchr($pic_info['name'],'.'),1);
// if($type!=='jpg'){
// echo '圖像類型不符合要求,允許的類型為:jpg';
// return false;
// }
$type=$pic_info['type'];
$allow_type=array('image/jpeg','image/png','image/gif');
if(!in_array($type,$allow_type)){
echo '圖像類型不符合要求,允許的類型為:'.implode(',',$allow_type);
return false;
}
//使用用戶ID為上傳文件命名
$new_file=$info['id'].'.jpg';
//設(shè)置上傳文件保存路徑
$filename='./'.$new_file;
//頭像上傳的臨時(shí)目錄成功,將其保存到腳本所在目錄下的img文件夾中
if(!move_uploaded_file($pic_info['tmp_name'],$filename)){
echo '頭像上傳失敗';
return false;
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<h2>編輯用戶頭像</h2>
<p>用戶姓名:<?php echo $info['name'];?></p>
<p>現(xiàn)有頭像:</p><img src="<?php echo './'.$info['id'].'.jpg?rand='.rand() ;?>"/><br>
上傳頭像:<input name="pic" type="file"><br>
<!--文件上傳表單-->
<input type="submit" value="保存頭像">
</form>
実行結(jié)果の表示: