ホームページ バックエンド開発 PHPチュートリアル PHP ファイルのアップロード クラス コード_PHP チュートリアル

PHP ファイルのアップロード クラス コード_PHP チュートリアル

Jul 21, 2016 pm 03:25 PM
class php public アップロード コード コピー 書類 親切

コードをコピーします コードは次のとおりです:

/**
* ファイルアップロードクラス
*/
class UploadFile {
public $max_size = '1000000';//アップロードファイルのサイズを設定します
public $file_name = 'date';//名前変更メソッドは以下を表します時間の命名、他の人は指定された名前を使用します
public $allow_types;//アップロードが許可されるファイル拡張子、異なるファイルタイプは「|」で区切られます
public $errmsg = '';//エラーメッセージ
public $uploaded = ' ' ;//アップロードされたファイル名 (ファイルパスを含む)
public $save_path;//アップロードされたファイルの保存パス
private $files;//アップロードを待機している送信されたファイル
private $file_type = array();//ファイルの種類
private $ext = '';//ファイル拡張子をアップロードします
/**
* コンストラクター、初期化クラス
* @access public
* @param string $file_name アップロードされたファイル名
* @param string $save_path アップロードされた対象フォルダー
*/
public function __construct($save_path = './upload/',$file_name = 'date',$allow_types = '' ) {
$this->file_name = $file_name;//名前変更メソッドは時間に基づいた名前付けを表し、他のメソッドは指定された名前を使用します
$this->save_path = (preg_match('//$/',$save_path) ) ? $save_path : $save_path .
$this->allow_types = $allow_types == '' ? 'jpg|gif|png|zip|rar' : $allow_types; /
パブリック関数upload_file($files) {
$name = $files['name'];
$size = $files['size']; $files['tmp_name'];
$error = $files['error'];
case 0 : $this->errmsg = ''; ->errmsg = 'php.ini のファイル サイズを超えました';
case 2 : $this->errmsg = 'MAX_FILE_SIZE オプションで指定されたファイル サイズを超えました'; this->errmsg = 'ファイルの一部のみがアップロードされました';
case 4 : $this->errmsg = 'ファイルはアップロードされませんでした'
break; = 'アップロード ファイル サイズは 0';
break;
default : $this->errmsg = 'ファイルのアップロードに失敗しました。 ';
break;
}
if($error == 0 && is_uploaded_file($tmp_name)) {
//ファイルの種類を確認します
if($this->check_file_type($name) == FALSE){
return FALSE ;
}
//ファイルサイズを検出
if($size > $this->max_size){
$this->errmsg = 'ファイルをアップロード'.$name.'< font> が大きすぎます。サポートされる最大値は '.ceil($this->max_size/1024).'kb ファイル';
FALSE を返します
} - >set_save_path();// ファイルの保存パスを設定します
$new_name = $this->file_name != 'date' ? $this->file_name.'.'.$this->ext : date( 'YmdHis ').'.'.$this->ext;//新しいファイル名を設定します
$this->uploaded = $this->save_path.$new_name;//アップロード後のファイル名
/ /ファイルを移動
if(move_uploaded_file($tmp_name,$this->uploaded)){
$this->errmsg = 'File'.$this->uploaded.'アップロード成功! ';
return TRUE;
}else{
$this->errmsg = 'ファイル'.$this->アップロードされました。'アップロードに失敗しました。';
return FALSE;
}
}
}
/**
* アップロードされたファイルの種類を確認します
* @access public
* @param string $filename チェックを待機しているファイル名
* @return チェックが成功した場合は TRUE を返し、失敗した場合は FALSE を返し、エラーメッセージを返します
*/
$ext = $this->get_file_type($filename); ;ext = $ext;
$allow_types =explode('|',$this->allow_types);//アップロード可能なファイル拡張子を配列に分割します
//echo $ext;//アップロードされたファイルを確認しますファイル拡張子 アップロードが許可されているファイル拡張子ですか?
if(in_array($ext,$allow_types)){
}else{
$this->errmsg = 'ファイルをアップロードタイプ エラー。'.str_replace('|',',',$this->allow_types).' 、など ファイルの種類!';
return FALSE;
}
}
/**
* ファイルタイプを取得します
* @access public
* @param string $filename ファイルタイプを取得する対象のファイル名
* @return string ファイルタイプ
*/
$info = pathinfo($filename); ['拡張子 '];
return $ext;
/**
* ファイルをアップロードした後に保存パスを設定します
*/
public function set_save_path(){
$this->save_path = (preg_match('//$/',$this- >save_path )) ? $this->save_path : $this->save_path .
if(!is_dir($this->save_path)){
// ディレクトリが存在しない場合は、ディレクトリ
$this- >set_dir();
}
}
/**
* ディレクトリを作成します
* @access public
* @param string $dir ディレクトリを作成するパス
* @return boolean エラーメッセージを返し、失敗した場合は FALSE を返します
*/
public function set_dir($dir = null){
//パスが存在するかどうかを確認する
if(!$dir ){
$dir = $ this->save_path;
}
if(is_dir($dir)){
$this->errmsg = '作成するフォルダーは既に存在します。 ';
}
$dir =explode('/', $dir);
foreach($v){
$d .= $v . !is_dir($d)){
$state = mkdir($d, 0777);
if(!$state)
$this->errmsg = '$d を作成しています。'エラー!';
}
}
}
return true;
}
}
/*************************************************
* 写真処理クラス
*
* 画像に対するサムネイル、ウォーターマーク、その他の操作を生成できます
* このクラスのデフォルトのエンコーディングは UTF8 です。GBK で使用したい場合は、img_mark メソッド内の中国語文字列ウォーターマークの iconv コメントを削除してください。
*
* UTF8の漢字と英語の文字の大きさ(ピクセル)を決めるのが難しいため、中国語と英語の文字が混在しすぎると文字列が左
*または右に偏ってしまう可能性があります。 Adjust $strc_w = strlen($this- プロジェクト環境に応じて get_mark_xy メソッド内 >mark_str)*7+5 Enter
* ライン調整
* このクラスをより良く使用するには、GD ライブラリのサポートが必要です。 GD ライブラリ 2.0+
*
* @author kickflip@php100 QQ263340607
******* **************************** **************/
class UploadImg extends UploadFile {
public $mark_str = 'kickflip@php100' //ウォーターマーク文字列
public $ str_r = 0; //文字列の色 R
public $str_g = 0; //文字列の色 G
public $str_b = 0; //文字列の色 B
$mark_ttf = './upload/SIMSUN.TTC' ;テキストフォントファイル (パスを含む)
public $mark_logo = './upload/logo.png'; //透かし画像
public $resize_h;//サムネイルの高さを生成
public $resize_w;//サムネイルを生成 サムネイルの幅
$ source_img;//ソース画像ファイル
public $dst_path = './upload/';//サムネイルファイル格納ディレクトリ、空白の場合はソース画像格納ディレクトリになります
/**
* サムネイル生成後の画像を生成します
* @access public
* @param integer $w 縮小画像の幅(px)
* @param integer $h 縮小画像の高さ(px)
* @param string $source_img ソース画像(パス+ファイル名)
*/
public function img_resize($w,$h,$source_img = NULL){
$source_img = $source_img == NULL ? $this->uploaded : $source_img;// ソース ファイルのアドレスを取得します (空の場合)。デフォルトは最後にアップロードされた画像です
if(!is_file($source_img)) { //ソース画像が存在するかどうかを確認します
$this->errmsg = 'File'.$source_img.'存在しません';
return FALSE;
}
$this->source_img = $source_img;
$img_info = getimagesize($source_img); // ソース画像を作成
$this->resize_w = $w ;
$this->resize_h = $h;
$thumb = imagecreatetruecolor($w,$h); ,$img_info [0],$img_info[1]);//サムネイル画像を生成
$dst_path = $this->dst_path == '' $this->save_path : $this->dst_path; //ターゲットフォルダーのパスを取得します
$dst_path = (preg_match('//$/',$dst_path)) ? $dst_path : $dst_path .//ターゲットフォルダーの後に / を追加します
if(!is_dir($dst_path) )) $this->set_dir($dst_path); // ターゲットフォルダーが存在しない場合は作成します
$dst_name = $this->set_newname($source_img);
$this->img_output($thumb) ,$ dst_name);//出力画像
imagedestroy($source);
imagedestroy($thumb);
/**
*Watermark
*@access public
*@param string $source_img ソース画像のパス + ファイル名
*@param integer $mark_type ウォーターマークの種類 (1 は英語の文字列、2 は中国語の文字列、3 は画像のロゴ、デフォルトは英語) string)
*@param integer $mark_postion ウォーターマークの位置 (1 は左下隅、2 は右下隅、3 は左上隅、4 は右上隅、デフォルトは右下隅です); *@return 透かし入りの画像
*/
public function img_mark($source_img = NULL,$mark_type = 1,$ mark_postion = 2) {
$source_img = $source_img == NULL ? $this->uploaded : $source_img;// ソース ファイルのアドレスを取得します。空の場合は、最後にアップロードされた画像がデフォルトになります
if( !is_file($source_img )) { //ソース画像が存在するかどうかを確認します
$this->errmsg = 'File'.$source_img.'存在しません'
return FALSE
}
$this->source_img; = $source_img;
$img_info = getimagesize($source_img);
$source = $this->img_create($source_img); // ソース画像を作成します
$mark_xy = $this->get_mark_xy($mark_postion); /ウォーターマークの位置を取得します
$mark_color = imagecolorallocate($source,$this->str_r,$this->str_g,$this->str_b);
switch($mark_type) {
case 1: //追加英語の文字列ウォーターマーク
$str = $this->mark_str;
imagestring($source,5,$mark_xy[0],$mark_xy[1],$str,$mark_color); source,$source_img);
break;
case 2: //中国語の文字列ウォーターマークを追加します
if(!is_file($this->mark_ttf)) { //フォントファイルが存在するかどうかを確認します
$this->errmsg = 'ウォーターマークに失敗しました: フォント ファイル '.$this->mark_ttf.' が存在しません!'
$this->mark_str; ,'utf-8', $str);//GBK エンコーディングを使用する場合は、この行のコメントを削除してください
imagettftext($source,12,0,$mark_xy[2],$mark_xy[3] ],$mark_color,$this->mark_ttf, $str);
$this->img_output($source,$source_img);
case 3: //画像のウォーターマークを追加します
if($this ->mark_logo)){ //ウォーターマークがある場合 ロゴ画像の基本情報を取得します 存在しない場合は終了
$logo_info = getimagesize($this->mark_logo);
}else{
$this->errmsg = '透かしの挿入に失敗しました: ロゴ ファイル '.$this->mark_logo.' が存在しません。 ';
FALSE を返す
}
$logo_info = getimagesize($this->mark_logo)
if($logo_info[0]>$img_info[0] || $logo_info[1]>$img_info[1] ]) { //ソース画像がロゴのサイズより小さい場合は終了します
$this->errmsg = '透かしの挿入に失敗しました: ソース画像 '.$this->source_img.' は '.$this-> より小さいです;マークロゴ。';
FALSE を返す
}
$logo = $this->img_create($this->mark_logo);
imagecopy ( $source, $logo, $mark_xy[5], 0, 0, $logo_info[0], $logo_info[1]);
$this->img_output($source,$source_img);
default: //その他はテキスト画像です
$str = $this- > ;mark_str;
imagestring($source,5,$mark_xy[0],$str,$mark_color);
$this->img_output($source,$source_img);
imagedestroy($source);
}
/**
* ウォーターマークの位置を取得します
* @access private
* @param integer $mark_postion ウォーターマークの位置 (1 は左下隅、2 は右下隅、3 は左上隅、4 は右上隅)隅、その他は右下隅です)
* @return array $mark_xy 透かしの位置の座標 (インデックス 0 は英語の文字列透かし座標 X、インデックス 1 は英語の文字列透かし座標 Y、
* インデックス 2 は中国語)文字列透かし座標 X、インデックス 3 は中国語文字列透かし座標 Y、インデックス 4 は透かし画像座標 X、インデックス 5 は透かし画像座標 Y)
*/
プライベート関数 get_mark_xy($mark_postion){
$img_info = getimagesize($this->source_img);
$stre_w = strlen($this - >mark_str)*9+5; //ウォーターマークの英語文字列の長さ (px) (サイズ 5 の英語文字のサイズは約 9px、さらに美しさの 5px)
//(サイズの中国語文字のサイズ12 は 12px、utf8 では、中国語の文字の長さは 3 バイトで 1 バイトあたり 4 ピクセルですが、英語の文字の長さは 1 バイトあたり約 9 ピクセルです
// 中国語と英語が混在している場合に完全に表示するには、その値を設定します長さをバイト数にします *7px)
$strc_w = strlen($this->mark_str)*7+5; //ウォーターマークの中国語文字列の長さ (px)
if(is_file($this->mark_logo) )){ //存在する場合 ウォーターマークロゴ画像はロゴ画像の基本情報を取得します
$logo_info = getimagesize($this->mark_logo)
}
//文字列の開始位置が異なるためimagestring 関数と imagettftext 関数では、英語と中国語の文字列は Y 位置も異なります
//imagettftext 関数はテキストの左上隅に基づいています
switch($mark_postion){
case 1: //位置の左下隅
$mark_xy[0] = 5; //透かしの英語文字列座標
$mark_xy[3] = $img_info[1]-5;/ /ウォーターマークの中国語文字列座標 Y
$mark_xy[4] = 5;//ウォーターマーク画像の座標 X
$mark_xy[5] = $img_info[1] -$logo_info[1]-5; //ウォーターマーク画像の座標 Y
break ;
case 2: //右下隅の位置
$mark_xy[0] = $img_info[0]-$stre_w; //透かしの英語文字列座標
$mark_xy[1] = $img_info[1]-20 / /ウォーターマーク英語文字列座標 Y
$mark_xy[2] = $img_info[0]-$strc_w; //ウォーターマーク中国語文字列座標 X
$ mark_xy[3] = $img_info[1]-5;//ウォーターマーク中国語文字列座標Y
$mark_xy[4] = $img_info[0]-$logo_info[0]-5;//透かし画像の座標 X
$ mark_xy[5] = $img_info[1]-$logo_info[1]-5 / /ウォーターマーク画像座標 Y
break;
case 3: //左上隅の位置
$mark_xy[0] = 5 //英語の文字列座標 Y
$mark_xy[4] = 5;画像座標 [0] = $img_info[0]-$stre_w; // ウォーターマーク英語文字列座標 X
$mark_xy[1] = 5 // ウォーターマーク英語文字列座標 Y
$mark_xy[2] = $img_info[0] -$strc_w; //ウォーターマーク中国語文字列座標 //ウォーターマーク画像座標 //ウォーターマーク英語文字列座標 中国語文字列座標 /ウォーターマーク画像座標 &*/
private function img_create($source_img) {
$info = getimagesize($source_img);
switch ($info[2]){
ケース 1:
if(!function_exists('imagecreatefromgif')){
$source = @imagecreatefromjpeg($source_img){
}else{
$source = @imagecreatefromgif($source_img); );
ブレイク;
$source = @imagecreatefromjpeg($source_img);
$source = @imagecreatefrompng($source_img); = @imagecreatefromwbmp($source_img);
デフォルト:
$source = FALSE;
$ ソースを返します。
/**
* 画像の名前を変更します
* @access private
* @param string $source_img ソース画像のパス + ファイル名
* @return string $dst_name 名前を変更した画像名 (パス + ファイル名)
*/
プライベート関数 set_newname($sourse_img) {
$info = pathinfo($sourse_img);
$new_name = $this->resize_w.'_'.$this->resize_h. '_'.$info['basename'];// ファイル名を width_height_filename に変更します
if($this->dst_path == ''){ // サムネイルを保存するパスが空の場合、デフォルトはソースファイルと同じフォルダー
$dst_name = str_replace($info['basename'],$new_name,$sourse_img);
}else{
$dst_name = $this->dst_path.$new_name
}
return; $dst_name;
}
/**
* 出力画像
* @access private
* @param $im 加工画像
* @param $dst_name 出力画像名(パス+ファイル名)
* @return 出力画像
*/
public function img_output($im,$dst_name) {
$info = getimagesize($this->source_img);
switch ($info[2]) {
ケース 1:
if(!function_exists('imagegif')){
imagejpeg($im,$dst_name);
}else{
imagegif($im, $dst_name)
ケース 2:
imagejpeg($im,$dst_name);
ケース 3:
imagepng($im,$dst_name);
imagewbmp($im,$dst_name);
}
?>


php ファイルのアップロード クラスのソース コードのパッケージ化



http://www.bkjia.com/PHPjc/324046.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/324046.html

次のようにコードをコピーします: ?php /*** ファイルアップロードクラス*/ class UploadFile { public $max_size = '1000000';//アップロード ファイル サイズを設定します public $file_name = 'date';//名前変更メソッドは次のようになります。 .
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles