PHPファイルアップロードの授業と詳しい解説(1/2)_PHPチュートリアル
phpチュートリアル 設定内のupload_tmp_dirパラメータが比較され、ファイルがこのディレクトリにある場合は、move_uploaded_fileが移動操作を実行します。さらに、この比較では大文字と小文字が区別され、Windows では / も異なります。 PHP 構成ファイルが解析されると、realpath 関数が呼び出されます。つまり、move_uploaded_file を実行する前に、$file['tmp_name'] = realpath($file['tmp_name']); を 1 回設定する必要があります。
誰もが注意すべきもう 1 つの状況があります。つまり、move_uploaded_file がアクセスできないパスとして設定されている場合、どのように処理しても、move_uploaded_file はファイルを正常に移動できません。
ファイルをアップロードする場合、move_uploaded_file 関数を使用してファイルを移動することはできませんが、コピーまたは名前の変更を使用することはできます。
私も迷ってしまいました。ドキュメントではかなり曖昧ですが、ファイルが http post でアップロードされたかどうかを確認するステップを追加する関数 move_uploaded_file です
次に、インターネット上でファイル アップロード クラスを見つけました
**。クラス* */
class Upload_file
{
/**声明**/
var $upfile_type,$upfile_size,$upfile_name,$upfile;
var $d_alt,$extension_list,$tmp,$arri;
var $datetime,$date ;
var $filestr,$size,$ext,$check;
var $flash_directory,$extension,$file_path,$base_directory;
var $url; // ファイルのアップロードが成功した後にパスをジャンプします;
function Upload_file()
{
/**コンストラクタ**/
$this->set_url("index.php"); //アップロード成功後にジャンプパスを初期化します;
$this->set_extention();
$ this->set_size(50); //アップロード ファイルの KB 制限を初期化します;
$this->set_date(); ファイル名のプレフィックスを設定します;
$this->set_base_directory("attachmentfile");ファイルアップロードのルートディレクトリ名は変更可能です。 ;
}
/**ファイルの種類**/
function set_file_type($upfile_type)
{
$this->upfile_type = $upfile_type; //ファイルの種類を取得します;
}
/**ファイル名を取得* * /
function set_upfile_name($upfile_name)
{
$this->upfile_name = $upfile_name; //ファイル名を取得します;
}
/**ファイルを取得**/
function set_upfile($upfile)
{
$ this->upfile = $upfile; //サーバーに保存されているファイルの一時ファイル名を取得します;
}
/**ファイルサイズの取得**/
function set_file_size($upfile_size)
{
$this ->upfile_size = $upfile_size; //ファイル サイズを取得します;
}
/**ファイルのアップロードが成功した後のジャンプ パスを設定します**/
function set_url($url)
{
$this->url = $url;ファイルが正常にアップロードされた後のファイル サイズ ジャンプ パス;
}
/**ファイル拡張子を取得**/
function get_extention()
{
$this->extension = preg_replace('/.*.(.*[^ .].*)*/ iu','1',$this->upfile_name); // ファイル拡張子を取得;
}
/**ファイル名を設定**/
function set_datetime()
{
$ this->datetime = date ("ymdhis"); //時刻でファイル名を生成;
}
/**ディレクトリ名を設定**/
function set_date()
{
$this->date = date( "y-m-d"); // 日付でディレクトリ名を生成します;
}
/**初期化によりアップロードが許可されます許可されたアップロード ファイル タイプを初期化します**/
function set_extention()
{
$this->extension_list = "doc|xls|ppt|avi |txt|gif|jpg |jpeg|bmp|png"; //デフォルトでアップロードが許可されている拡張子名;
}
/**最大アップロード KB 制限を設定**/
function set_size($size)
{
$this-> ;size = $size; /アップロードできる最大ファイルサイズを設定します;
}
/**初期化ファイル格納ルートディレクトリ**/
function set_base_directory($directory)
{
$this->base_directory = $directory; /ファイルストレージのルートディレクトリを生成;
}
/**初期化ファイル格納サブディレクトリ**/
function set_flash_directory()
{
$this->flash_directory = $this->base_directory."/".$this-> date; //ファイルストレージサブルーチンディレクトリを生成;
}
/**エラー処理**/
function showerror($errstr="不明なエラー! "){
echo "";
exit();
}
/**ジャンプ**/
function go_to($str,$url)
{
echo "";
exit() ;
}/**ルートディレクトリが作成されていない場合は、ファイル格納ディレクトリ※を作成します*/
function mk_base_dir()
{
if (! file_exists($this->base_directory)){ //ルート ディレクトリが存在するかどうかを確認します;
@mkdir($this - >base_directory,0777); //存在しない場合は作成します;
}
}/**サブディレクトリが作成されていない場合は、ファイル格納ディレクトリ*を作成してください*/
print $ this->go_to("ファイルは正常にアップロードされました。 ",$this->url); //アップロードに成功しました;
function mk_dir()
{
if (! file_exists($this->flash_directory) )){ {
$this->ext =explode("|",$this->extension_list);//「|」を使用してデフォルトの拡張子を分解します;
}
/**アップロードが許可されている分解されたファイルタイプを配列形式で取得**/
function check_extention( )
{
for($i=0;each($this->ext);$i++) //配列を走査します;
{
if($this->ext[$i] = = strto lower($this ->extention)) // ファイル拡張子を比較して、デフォルトで許可されている拡張子と一致するかどうかを確認します。
- $this->check){$this->showerror("正しい拡張子が必要です".$this->extension_list." のいずれかになります!");}
// 一致しない場合は警告します
}
/**拡張機能が違反していないか確認してください**/
function check_size()
{
if($ this->upfile_size >round($this->size*1024)) //ファイル サイズがデフォルト サイズを超えているかどうか ;
{
$this->showerror("添付ファイルをアップロードすることはできません ".$this ->size."kb"); //超過した場合に警告;
}
}
/**ファイルサイズが規格を超えていないか確認※*/
function set_file_path()
{
$this->file_path = $this-> flash_directory."/".$this->datetime.".".$this->extension; //完全なファイル アクセス Path;
}
/**完全なファイル アクセス パス**/
function copy_file()
{
if(copy($this->upfile,$this->file_path)){ //ファイルをアップロード;}else {
} print $this->showerror("予期しないエラーが発生しました。もう一度お試しください!"); //アップロードに失敗しました;
}
}
/**ファイルをアップロード**/
function save()
{
$this->set_flash_directory(); //ファイルアップロードのサブディレクトリ名を初期化します;
$this->get_extention(); //ファイルを取得しますextension ;
$this->get_compare_extention(); //「|」を使用してデフォルトの拡張子を分解します;
$this->check_extention() // ファイル拡張子が違反しているかどうかを検出します;
$this-> ;check_size( ); // ファイルサイズが制限を超えているかどうかを確認します
$this->mk_base_dir(); // ルートディレクトリが存在しない場合は作成しますサブディレクトリが存在しない場合は、 ;
$this->set_file_path(); // ファイルへの完全なアクセス パスを生成します;
$this->copy_file() // ファイルをアップロードします;
}
}
1 2

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

繊維はPhp8.1で導入され、同時処理機能が改善されました。 1)繊維は、コルーチンと同様の軽量の並行性モデルです。 2)開発者がタスクの実行フローを手動で制御できるようにし、I/O集約型タスクの処理に適しています。 3)繊維を使用すると、より効率的で応答性の高いコードを書き込むことができます。

PHPコミュニティは、開発者の成長を支援するための豊富なリソースとサポートを提供します。 1)リソースには、公式のドキュメント、チュートリアル、ブログ、LaravelやSymfonyなどのオープンソースプロジェクトが含まれます。 2)StackOverFlow、Reddit、およびSlackチャネルを通じてサポートを取得できます。 3)開発動向は、RFCに従うことで学ぶことができます。 4)コミュニティへの統合は、積極的な参加、コード共有への貢献、および学習共有への貢献を通じて達成できます。

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは死にかけていませんが、常に適応して進化しています。 1)PHPは、1994年以来、新しいテクノロジーの傾向に適応するために複数のバージョンの反復を受けています。 2)現在、電子商取引、コンテンツ管理システム、その他の分野で広く使用されています。 3)PHP8は、パフォーマンスと近代化を改善するために、JITコンパイラおよびその他の機能を導入します。 4)Opcacheを使用してPSR-12標準に従って、パフォーマンスとコードの品質を最適化します。

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1
使いやすく無料のコードエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
