検索
ホームページバックエンド開発PHPチュートリアルphp ファイルアップロードクラス (古典的で使いやすいものを集めました)

非常に完全な機能を備えたクラシックで使いやすい PHP ファイル アップロード クラスを収集し、開発中のバックアップとして保存します。
良いものはみんなが気に入れば本当に良いものです(笑)! ! !

/**
*ファイルアップロードクラス
*/
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 = ''; //ファイル拡張子をアップロードします

/**
*コンストラクター、初期化クラス
* @accesspublic
*/
public function __construct($save_path = './upload/',$file_name = 'date',$allow_types = '') {
$this-> $save_path : '/';
*
*ファイルのアップロード
* @accesspublic
* @param $ファイルアップロードするのが待機している(フォームから$ _files [])
*/
パブリック関数 Upload_file($files) {
$name = $files['name'];
$type = $files['type'];
$size = $files['size'] ;
$tmp_name = $files['tmp_name'];
$error = $files['error'];
switch ( $error) {
case 0 : $this->errmsg = '';

case 1 case 1ファイルサイズ;
ケース 3: $this->errmsg = 'ファイルの一部だけがアップロード済み';
休憩。
                                                                                                                                                                         '; if($ this> check_file_type($ name)==; color=red>'.ceil($this->max_size/1024).'kb $this- & gt; // ファイルの保存パスを設定します
$ new_name = $this- & gt; move_uploaded_file ($tmp_name,$this->uploaded)){ 成功! ';
True を返します
{
$ This-& GT; ファイル & lt;/font & gt;上 失敗! '; {
$ext = $this->get_file_type($filename) $this ->ext = $ext;
$allow_types =explode('|',$this->allow_types);//分割配列へのアップロードが許可されているファイル拡張子
//echo $ext;
//アップロードされたファイルを確認する ファイル拡張子の中の拡張子はアップロードが許可されていますか? if(in_array($ext,$allow_types)){
return True; .str_replace('|',',',$this->allow_types).'アウトアウトout out using using using パブリック関数get_file_type ($ filename) {
$ info = PATHINFO ($ FILENAME);
$ EXT = $ Info ['拡張子']
*ファイルタイプを取得します*/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)){
/**
* ファイルアップロード後に保存パスを設定します
*/
public function set_dir($dir = null){
is_dir($dir)){
this->errmsg = '作成するフォルダーは既に存在します。 ';
} $ $ DIR = Explode ('/', $ DIR);
Foreach ($ DIR AS $ v) {
$ d.'/'; $d)){
;errmsg = 'ディレクトリを作成しています' エラー! ';
trueを返します。 ******************
* 画像処理クラス
*
* 写真に対してサムネイル、ウォーターマーク、その他の操作を生成できます
* このクラスのデフォルトのエンコーディングは UTF8 です。 GBK で使用したい場合は、img_mark 内の中国語の文字列ウォーターマーク iconv コメントを削除してください。メソッド
*
* UTF8 の中国語文字と英語文字はサイズ (ピクセル) を決定することが難しいため、中国語と英語の文字が混在しすぎると、文字列が左に歪んで見えることがあります
*プロジェクト環境に応じて $strc_w = strlen($ in the get_mark_xy メソッド this->mark_str)*7+5 enter
* 行調整
* GD ライブラリのサポートが必要です。このクラスをより効果的に使用するには、GD ライブラリのサポートが推奨されますGD ライブラリ 2.0+ を使用するには
*
* @authorkickflip@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
= './upload/SIMSUN.TTC';ファイル (パスを含む)
public $mark_logo = './upload/logo.png'; // ウォーターマーク画像
public $resize_h;// サムネイルの高さを生成
public $resize_w;// サムネイルの幅を生成
public $source_img;/ /ソース画像ファイル
public $dst_path = './upload/';//サムネイルファイルの保存ディレクトリ、空白の場合はソース画像保存ディレクトリになります

/**
*。ソースイメージ(パス +ファイル名)*/
public function img_resize( $w,$h,$source_img = NULL){
$source_img = $source_img == NULL ? $this->uploaded : $source_img;// ソース ファイルのアドレスを取得します。空の場合はデフォルトになります。最後にアップロードした画像に追加します
>errmsg = 'File'.$source_img.'source_img);
$source = $this- >img_create($source_img); // ソース画像を作成しますを使用using imagecopyresize ($thumb,$source,0,0,0,0,$w,$h,$img_info[0],$img_info[1]);//サムネイル画像を生成します
== '' ? >save_path : $this->dst_path; //ターゲットフォルダーのパスを取得します $dst_path = (preg_match('//$/',$dst_path)) ? /
対象フォルダーの後ろ if(!is_dir($dst_path)) $this->set_dir($dst_path); //対象フォルダーが存在しない場合は作成します
$dst_name = $this->set_newname($ source_img);
$これ-
/**
*ウォーターマークは英語の文字列)
*@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 ? // ソース ファイルのアドレスを取得します。
Source_img を返します。
} $ this- & gt; img_info = Getimagesize $ Source = $ this- & gt; img_create ($ source_img);/ / ソース画像を作成 $ Mark_xy = $ this- & gt; // ウォーターマークの位置を取得
$ Mark_color = ImageColoraALALALATE ($ Source, $ this-& gt; str_r, $ T His-& gt; 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);
$this->img_output($source,$source_img) ; if(!is_file($ this-> mark_ttf)){// fontファイルが存在するかどうかを確認します。 $mark_color,$this->mark_ttf,$str);
休憩;

case 3: //画像のウォーターマークを追加します
if(is_file($this->mark_logo)){ //ウォーターマークのロゴ画像が存在する場合、ロゴ画像の基本情報を取得します。存在しない場合は終了します
$logo _info = getimagesize($this->mark_logo);
}else{
$this->errmsg = '透かしの挿入に失敗しました: ロゴ ファイル'.$this->mark_logo.' が存在しません。 '; >$img_info[0] || $logo_info[1]>$img_info[1]) {// ソース画像がロゴのサイズより小さい場合は終了します
$ this-& gt;失敗: ソース画像'。$ This-> ';
」 ( $source, $logo, $mark_xy[4], $mark_xy[5], 0 , 0, $logo_info[0], $logo_info[1])
$str = $ this-> mark_str;
Imagestring($source,5,$mark_xy[0],$mark_xy[1],$str,$mark_color);
$this->img_output($source,$source_img);
ブレーク ;
imagedestroy( $source); this->source_img);

$stre_w = strlen($this->mark_str)*9+5; //ウォーターマークの英語文字列の長さ (px) (サイズ 5 の英語の文字サイズ)約 9px、さらに美しさのために 5px)
utf8 では、漢字の長さは 12px です。バイトあたり 4 ピクセル、英語の文字の長さは 1 バイトあたり約 9 ピクセルです。 / 中国語と英語が混在している場合に完全に表示するために、その長さをバイト数*7px) に設定します
$strc_w = strlen($this->mark_str)*7+5;中国語の文字列 (px)

{// 透かしロゴの画像があれば、ロゴ画像の基本情報が取得されます。なぜ英語と中国語の文字列の Y 位置も異なります
。//imagestring 関数はテキストの左上隅に基づいています。imagettftext 関数はテキストの左下隅に基づいています。Switch($mark_postion){

ケース 1: //左下隅の位置
英語の文字列。座標 ] = $ 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; //透かしの英語文字列座標 X
$mark_xy; [1] = $img_info[1]-20;//ウォーターマーク英語文字列座標 Y
= $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
X
$mark_xy[1] = 5 ;//ウォーターマークの英語文字列座標 Y
$mark_xy[2] = 5; //ウォーターマークの中国語文字列座標 X
$mark_xy[3] = 15;//ウォーターマークの中国語文字列座標 Y
$mark_xy[4] = // 位置右上隅
] = $img_info[0]-$stre_w; //ウォーターマークの中国語の文字列座標 = $img_info[0]-$stre_w;$mark_xy[2] = $img_info[0]-$strc_w; //透かし中国語文字列座標 4] = $img_info[0]-$logo_info[0]-5;//透かし画像座標
Break;
}
return $mark_xy;
}

/**
*ソースイメージを作成します*/
プライベート関数 img_create($source_img) {
$info = getimagesize($source_img);
switch ($info[2]) {E ケース 1:
if (! Function_exists ('ImageCreateFromgif')) {
$ Source = @imageCreateFromjpeg ($ Source_img) ($ Source_img)

ケース 2:
ブレークの使用;
ケース 6:
$source = @imagecreatefromwbmp ($source_img);
ブレーク;
**
* 画像の名前を変更します
* @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,$source_img);
}else{
$dst_name = $this->dst_path. $new_name; * @access private
* @param $im 加工後の画像
* @param $dst_name 出力画像の名前(パス+ファイル名)
* @return 出力画像
*/
public function img_output($im,$dst_name) {
$ info = getimagesize($this->source_img);
switch ($info[2]){
case 1:
if(!function_exists('imagegif')){
imagejpeg($im, $dst_name);
else{
使用する 使用する スルー 使用する スルー スルー スルー アウト アウト アウト アウト アウト アウト スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルー スルースルー
ケース 3:
imagepng($im,$dst_name);
ブレーク



声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHP依存性噴射コンテナ:クイックスタートPHP依存性噴射コンテナ:クイックスタートMay 13, 2025 am 12:11 AM

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

PHPの依存噴射対サービスロケーターPHPの依存噴射対サービスロケーターMay 13, 2025 am 12:10 AM

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

PHPパフォーマンス最適化戦略。PHPパフォーマンス最適化戦略。May 13, 2025 am 12:06 AM

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPメールの検証:電子メールが正しく送信されるようにしますPHPメールの検証:電子メールが正しく送信されるようにしますMay 13, 2025 am 12:06 AM

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl

PHPアプリケーションをより速くする方法PHPアプリケーションをより速くする方法May 12, 2025 am 12:12 AM

tomakephpapplicationsfaster、followthesesteps:1)useopcodecachinglikeopcacheTostoredscriptbytecode.2)最小化abasequeriesecachingingindexing.3)leveragephp7機能forbettercodeefficiency.4)

PHP依存性インジェクション:コードのテスト可能性を改善しますPHP依存性インジェクション:コードのテスト可能性を改善しますMay 12, 2025 am 12:03 AM

依存性注入(DI)は、明示的に推移的な依存関係によりPHPコードのテスト可能性を大幅に改善します。 1)DI分離クラスと特定の実装により、テストとメンテナンスが柔軟になります。 2)3つのタイプのうち、コンストラクターは、状態を一貫性に保つために明示的な式依存性を注入します。 3)DIコンテナを使用して複雑な依存関係を管理し、コードの品質と開発効率を向上させます。

PHPパフォーマンスの最適化:データベースクエリの最適化PHPパフォーマンスの最適化:データベースクエリの最適化May 12, 2025 am 12:02 AM

DatabaseQueryoptimizationInpholvesseveralstrategESTOEnhancePerformance.1)selectonlynlynlyndorycolumnStoredatedataTransfer.2)useindexingtospeedupdataretrieval.3)revenmecrycachingtostoreres sultsoffrequent queries.4)

See all articles

ホット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衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 Mac版

SublimeText3 Mac版

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター