ホームページ >バックエンド開発 >PHPチュートリアル >PHPファイルシステムの詳しい説明_PHPチュートリアル

PHPファイルシステムの詳しい説明_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:16:00762ブラウズ

ファイル処理関数
1. ファイル操作
指定されたファイルを開くと、対応するオブジェクトが返されます。指定されたファイルが存在しない場合は、ファイルが自動的に作成されます。
resource fopen(string filename,string mode [,int use_include_path][,resource context]);
filename は、ファイルパスを含むファイル名、または特定のプロトコルで指定された URL にすることができます (リモートファイルを開きます)。システム切り替えによるトラブルを回避するには、パス区切り文字として「/」を使用します:
r: 読み取り専用モード、ファイルポインタは次の場所にあります。
r+: 読み取り専用モード -- 読み取り/書き込みモード、ファイルポインタはファイルの先頭にあります
w: 書き込み専用モード、ファイル。ファイルが存在する場合は、その内容を削除して書き換えます。
: 書き込み専用モード ---- ファイルの読み取りと書き込み。ファイル ポインタはファイル ヘッダーを指します。ファイルが存在する場合は、内容を削除して書き換えます。
x: 慎重に書き込みます。ファイルを書き込みモードで開き、ファイルの先頭から書き込みます。ファイルが存在する場合は false を返し、E_WARNING レベルのエラー メッセージを生成します
エラー メッセージ
a: ファイルが存在する場合、ファイル ポインタはファイルの末尾を指します。自分でファイルを作成します。
a+: ファイルが存在する場合は、ファイルの末尾を指します。そうでない場合は、ファイルを自分で作成します。 : バイナリモード。他のモードとリンクするために使用されます (Windows のオプション)
t: 他のモードと組み合わせるために使用されます (Windows のオプション)
ファイルが誤って削除される可能性があるため、fopen() 関数を使用する場合は注意してください。同時に、オペレーティング システムが異なれば、行末記号も異なります (UNIX:n Windows:rn Macinitosh:r)。 行末記号を誤って使用すると、ファイルを開いたときに文字化けが大量に出力される可能性があります。上記は "'t'"、"b'" を使用することで回避できます。

ファイルを読み込む:

String fgetc(resource handle);//EOF が見つかった場合は、ハンドルから戻ります。 , false が返されます; String fgets(int handle[,int length]);//ファイルポインタが指す位置から文字列を取得し、最大長-1のバイト列を返します。ポインタは有効であり、fopen() または fsockopen() によって正常にオープンされたファイルを指す必要があります。 length は、改行、EOF、または length が指定された時点で終了し、長さは無視されます。
String fgetss(resource handle[,int length][,string allowed_tags]);// 行を読み取り、html タグと php タグを除外します
String fread(int handle,int length) ;// データを読み取ります。ファイルからの任意の長さ。 、バイナリ ファイルの読み取りにも使用できます。 handle はファイルを指すリソースで、length は length バイトを読み取るか、EOF に遭遇すると実行を停止します。
例:



コードをコピーします

コードは次のとおりです: $filename="./files.text";
$fp=fopen($finename,"rb") ;
$エンチョフレッド($fp,100)?>
readfile()、file()、および file_get_contents() 関数。
int readfile(string filename[,bool use_include_path,resource context]);//ファイルを読み取ります。バッファへの書き込みが成功した場合は、読み取られたバイト数を返し、それ以外の場合は false を返します。ファイル名 ファイル名。 use_include_path パラメーターは、include_path でのファイルの検索をサポートするかどうかを制御します。true はサポートされることを意味します。 readfile 関数を使用してファイルを開いたり閉じたりする必要はありません。
array file(string filename [,bool use_include_path[,resource context]]);//ファイル全体の内容を配列に読み込みます。成功した場合は、配列内の各要素がファイル内の対応する行として返されます。それ以外の場合は、 false が返されます。
String filename[,bool use_include_path[,resource context[, int maxlen]]]]);//context は 5.0 の新しいコンテンツであり、NULL で無視できます。 offset、maxlen は 5.1 の内容です。 offset はファイルの開始位置をマークするために使用され、maxlen は読み取られるファイルの長さを設定します。この方法はバイナリ ファイルの読み取りに適しています。ファイルの内容を文字列に読み取るための推奨される方法です。オペレーティング システムでサポートされている場合は、パフォーマンスを向上させるためにメモリ マッピング テクノロジも使用されます。特殊文字 (スペースなど) を含む URL を開く場合は、urlencode() を使用して URL をエンコードします。

注: readfile()、file()、および file_get_contents() は、フォルダー全体の内容を読み取る場合は fopen() および fclose() 関数を使用する必要はありませんが、文字、文字行などを読み取る場合には fopen() および fclose() 関数を使用する必要はありません。長さの文字を使用する必要があります。


2. ファイルへの書き込み:
int fwrite(resource handle, string[,int length]);//ファイル書き込み操作を実行します。このメソッドは、文字列の内容を書き込むためにも使用されます。ファイル ポインタ ハンドルに書き込まれます。 length が設定されている場合、操作は length バイトが書き込まれた後、または文字列が書き込まれた後に停止します。書き込みが成功した場合は true を返し、そうでない場合は false を返します。
注: length パラメーターが指定されている場合、php.ini ファイル内の magic_quotes_runtime オプションは無視され、文字列内のスラッシュは削除されません。バイナリ ファイルとテキスト ファイル システムを区別するには、ファイルを開くときに fopen() 関数のモード パラメータに「b」を追加する必要があります。
int file_put_contents(string filename,string data[.int flags[,resource context]]);//ファイルに文字列を書き込み、成功した場合はバイト数を返し、それ以外の場合は false を返します。 flags: ファイルのロックを実装します (オプションには、file_use_include_path、file_append: 追加、lock_ex: 排他ロックが含まれます)。 context コンテキストリソース。
注: fwrite() にはファイルを書き込む機能がありますが、fopen() および fclose() 関数によってサポートされている必要があります。 file_put_contents() は、fopen()、fwrite()、および fclose() の関数を統合し、独立してファイルの書き込みを完了できます。

3. ファイルを閉じる
ファイルが開いている場合は、ファイルに対する操作が完了した後、ファイルを閉じる関数が必要です。そうしないと、エラーが発生する可能性があります。
bool fclose(resource handle);// パラメータハンドルが指すファイルを閉じます。成功した場合は true を返し、そうでない場合は false を返します。


ファイルをロック テキストファイルにデータを書き込むときは、他のユーザーが同時にファイルの内容を変更できないように、最初にファイルをロックする必要があります。ファイルのロックは、flock() 関数を通じて PHP に実装されます。
bool flock(int handle,int Operation);//パラメータ操作はロック許可を制御します。以下を含みます: lock_sh: 共有ロック (リーダー) を取得します。 lock_ex: 排他ロック(書き込み)を取得します。 lock_un: ロックを解除します。 lock_nb: ロック時に flock() 関数がブロックされないようにします。


ディレクトリ処理関数
ディレクトリは特別な種類のファイルです。これはファイルなので、操作する場合は、まずファイルを開いて閲覧し、最後に忘れずに閉じる必要があります。


1. ディレクトリを開きます
指定されたディレクトリファイルを開きます。成功したら、ディレクトリハンドルを返します。それ以外の場合は false を返します。ファイルを開く場合とは異なり、ディレクトリが存在しない場合、ディレクトリは自動的に作成されず、エラー メッセージがスローされます。 opendir() 関数の前に「@」記号を追加すると、エラー メッセージの出力をブロックできます。
resource opendir(string path[,resource context]);//パスは開くディレクトリファイルを指定します。指定されたパスが有効なディレクトリではない場合、または権限の問題によりファイル システム エラーが発生して開けない場合、この関数は false を返し、E_WARNING レベルのエラー メッセージを生成します。

2. ディレクトリを参照します

opendir 関数と scandir 関数によって返されたハンドルを使用して、参照操作を実装します。
Array scandir(string directory[,intsorting_ordering[,resource context]]);//指定されたパスの下のディレクトリとファイルを参照するために使用されます。成功した場合はファイル名を含む配列を返し、それ以外の場合は false を返します。 directory は参照するディレクトリを指定します。ディレクトリでない場合は false が返され、E_WARNING レベルのエラー メッセージが生成されます。 sort_order は並べ替え順序を設定します。デフォルトはアルファベット昇順です。このパラメータを指定すると、降順で並べ替えられます。
備考: is_dir() 関数は、指定されたファイル名がディレクトリであるかどうかを判断します。ファイル名が存在し、ディレクトリである場合は true を返し、それ以外の場合は false を返します。相対ディレクトリの場合は、その相対パスが現在の作業ディレクトリに対してチェックされます。

3. ディレクトリを閉じます。

void Closedir(resource handle);//ハンドル、閉じる作業ディレクトリのハンドル。

注: 以前に学んだように、開かれたディレクトリが存在しない場合、システムはディレクトリを作成しません。次に、必要なディレクトリを自分で作成できます。次の関数が適用できます:
mkdir() 関数: 新しいディレクトリを作成し、成功した場合は true、それ以外の場合は false を返します。
rmdir()関数:ディレクトリを削除します。ディレクトリは空である必要があり (ディレクトリ内にファイルやサブディレクトリが存在しない)、操作権限が必要です。
Unlink() 関数: ファイルを削除し、成功した場合は true、失敗した場合は false を返します。

ファイルのアップロードとダウンロードの原則

ステップの内容:
ステップ 1: アップロードされたファイルを制御し、php.ini ファイルを通じて設定します。
ステップ2:アップロードされたファイルを判断します。アップロードするファイルのサイズや形式など
ステップ3:ファイルをアップロードする操作方法を実行します。

1. アップロードされたファイルの制御:

PHP は、アップロードがサポートされているかどうか、アップロードされたファイルの一時ディレクトリ、アップロードされたファイルのサイズ、命令の実行時間、割り当てられたメモリなど、アップロードされたファイルを制御します。スペースによる。
php.iniファイルでファイルアップロードオプションを見つけて、上記のオプションの設定を完了します。オプションの意味は次のとおりです:
file_uploads: on の場合、サーバーがファイルのアップロードをサポートしていることを意味します。 off の場合、サーバーはファイルのアップロードをサポートしません。通常、これはデフォルトでサポートされており、このオプションを変更する必要はありません。
upload_tem_dir: ファイルをアップロードするための一時ディレクトリ。ファイルのアップロードが成功する前に、ファイルはまずサーバーの一時ディレクトリに保存されます。ほとんどの場合、システムのデフォルト ディレクトリが使用されますが、自分で設定することもできます。
Upload_max_filesize: サーバーがアップロードできるファイルの最大サイズ (MB 単位)。システムのデフォルトは 2MB です。それを超える場合は、値を変更する必要があります。
max_execution_time: php のコマンドを実行できる最大時間 (秒単位)。非常に大きなファイルをアップロードする場合は、このコマンドを変更する必要があります。変更しないと、ファイルのタイムリーなアップロードはサーバーによって許可される範囲内になりますが、コマンドの実行可能な最大時間を超える場合は、やはりアップロードできません。
Memory_limit: php のコマンドによって割り当てられたメモリ空間 (MB 単位)。そのサイズは、非常に大きなファイルのアップロードにも影響します。

備考: クライアントでファイルのアップロードのアプリケーションを制御する場合、フォーム form の enctype 属性とメソッド属性、および隠しフィールド MAX_FILE_SIZE を指定します。
enctype="multipart/form-data": フォームのエンコーディング データ メソッドを指定します。 。
Method="post":データ送信の方法を指定します。
: 隠しフィールドを使用して、アップロードされるファイルのサイズをバイト単位で制御します。この値は、php.ini 設定ファイルの Upload_max_filesize オプションで設定された値を超えることはできません。アップロードされるファイルのサイズを完全に制御することはできず、不必要なトラブルを回避することしかできません。

2.アップロードされたファイルを判定する

グローバル変数$_FILESは、アップロードされたすべてのファイルに関する情報を含む配列です。配列内の各要素の意味は次のとおりです:
$_FILES[filename][name]: text.txt、title.jpg など、アップロードされたファイルのファイル名を格納します。
$_FILES[ファイル名][サイズ]: 保存されたファイルのサイズ (バイト単位)。
$_FILES[filename][tem_name]: ファイルをアップロードするときに、まず一時ディレクトリに一時ファイルとして保存する必要があるため、一時ディレクトリにファイルを保存するために使用されるファイル名。
$_FILES[ファイル名][タイプ]: アップロードされたファイルの MIME タイプを格納します。 MIME は、さまざまなファイル形式のタイプを指定します。各 MIME タイプは、「/」で区切られたメイン タイプとサブタイプで構成されます。例:「image/gif」のメインタイプは画像で、サブタイプはGIF形式ファイルです。 「text/html」はテキストのHTMLファイルを表します。
$_FILES[ファイル名][エラー]: ファイルアップロードのエラーコードを格納します: この項目はPHP4.2.0版での新規内容です。戻り値は5種類あります:
0: エラーがないことを示します。ファイルが正常にアップロードされました。
1:アップロードされたファイルのサイズが設定ファイルディレクティブのupload_max_filesizeオプションの制限値を超えていることを示します。
2: アップロードされたファイルのサイズが、HTML フォームの max_file_size オプションで指定された値を超えていることを示します。
3: ファイルの一部のみがアップロードされていることを示します。
4: ファイルがアップロードされていないことを示します。
例:
コードをコピー コードは次のとおりです:

/*写真をアップロードするかどうかを決定*/
if(!empty($_FILES['up_picture'][name])){
/*写真の情報を変数に代入*/
$ type= strto lower(strstr($_FILES['up_picture'][name],"."));
if($type != '.jpg' && $type != '.gif') echo "アップロードしたファイル間違った形式です ";
else{
if($_FILES['up_picture'][size]<2000000 && $_FILES['up_picture'][size]>0){
echo "アップロード ファイル名: " .$_FILES[' up_picture'][name]."
";
echo "アップロード ファイルの種類:".$type."
";
echo "アップロード ファイルのサイズ:"; .$_FILES[' up_picture'][size]."
";
}else echo "画像のサイズが要件を満たしていません。"; 3. ファイルのアップロード。


phpのmove_uploaded_file()関数を適用してファイルをアップロードします。ただし、実行前に、スクリプトを通じて操作できないファイルを不正に管理することによる潜在的な攻撃を防ぐために、まず is_uploaded_file() 関数を使用して、指定されたファイルが HTTP POST 経由でアップロードされたかどうかを確認し、アップロードされている場合は true を返します。この機能により、悪意のあるユーザーがスクリプトをだましてアクセスできないファイルにアクセスすることができなくなります。
bool is_uploaded_file(string name);//指定されたファイルが HTTP POST 経由でアップロードされたかどうかを判断するために使用されます。 filename は、$_FILES['filename']['temp_name'] のような変数である必要があります。クライアントからアップロードされたファイル名は使用できません。

move_upload_file(string filename,string destination);//この関数は、サーバー内の指定された場所にファイルをアップロードするために使用されます。成功した場合は true を返し、そうでない場合は false を返します。 filename は、アップロードされたファイルの一時ファイル名、つまり $_FILES['tmp_name'] を指定し、パラメータ destination は、アップロード後に保存されるファイルの新しいパスと名前を指定します。パラメータが合法的にアップロードされたファイルではない場合、操作は行われず、関数は false を返します。正当なアップロード操作であるが、何らかの理由で移動できない場合、操作は行われず、警告が発行され、 false が返されます。

コードをコピー

コードは次のとおりです:


if( !empty($_FILES[ 'up_picture' ][ 'name' ])){ if( $_FILES['up_picture '][ 'error'] > 0){ echo "アップロードエラー!"; switch($_FILES['up_picture']['error']){ ケース 1:
echo "アップロードされたファイルが値を超えています設定ファイルで指定されています";
break;
ケース 2:
echo "アップロードされたファイルがフォームの指定値を超えています";
break;
ケース 3:
echo "アップロードされたファイルは不完全です";
break;
ケース 4:
echo "アップロードされたファイルがありません";
break ;
}else{
if( ! is_dir('./upfile/') ) mkdir('./upfile/'); /upfile/'.time().$_FILES[' up_picture' ][ 'name' ];
if( is_uploaded_filed( $_FILES['up_picture' ][ 'tmp_name' ] )){
if(!move_uploaded_file( $_FILES) ['up_picture' ][ 'tmp_name' ] ,$path )){
echo "アップロードに失敗しました!";
}else{
echo "File".time().$_FILES['up_picture' ][ 'name' ] ."アップロードに成功しました。サイズは次のとおりです: ".$_FILES[ 'up_picture' ][ 'size' ] ;
}
}else{
echo "ファイルをアップロード".$_FILES['up_picture' ][ 'name' ]。違法";
}
}
}
?> ;




4. ファイルのダウンロード


ここでは主にheader()関数を使ったhttp経由でのファイルのダウンロードを紹介します。 header() 関数は HTTP 関数であり、その機能は HTML ドキュメントのヘッダーを HTTP 経由でブラウザに送信し、このページの処理方法をブラウザに指示することです。
void header(string string[,bool replace[,int http_respone_code]]);//パラメータ文字列は、送信されるヘッダーを指定します。 replace パラメーターは、複数のヘッダーが一度に送信された場合に、同様のヘッダーを置換するか追加するかを制御します。 false の場合、同じタイプの複数のヘッダーが強制的に送信されます。デフォルトは true です。パラメータ http_respone_code は、HTTP 応答コードを強制的に指定された値に設定します:
ダウンロード手順は次のとおりです:
a): 「Content-Type」でファイルの MIME タイプを指定します。
b): 「Content-Disposition」でファイルを記述し、値「attachment;filename="test.jpg"」は福建省であることを示し、ダウンロードしたファイルの名前も指定します。
c): 「Content-Length」でダウンロードファイルのサイズを設定します。
d): readfile() 関数を通じてファイルの内容を読み取ります。 例:


コードをコピーします

コードは次のとおりです:


header('Content-Type:image/jpg');
header(' Content-Disposition:attachment;filename="test. jpg" ');
header('Content-Length:'.filesize('test.jpg') );
readfile('test.jpg');

5. リモートファイルにアクセスする

ステップ 1: php.ini ファイルのオプションallow_url_fopen を on に設定します。このパラメータはデフォルトで有効になっており、http および ftp で指定されたリモート ファイルを開くことができます。 allow_url_fopen が off に設定されている場合、リモート ファイルを開くことはできません。
ステップ 2: fopen() 関数を使用してファイルの内容を読み取ります。コンテンツに基づいて必要なリソースを作成し、ローカルに保存します。

ps: php.ini 設定ファイルにおけるファイル操作とディレクトリ操作の拡張メソッドの詳細については、公式 PHP ガイドを参照してください。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/326004.html技術記事ファイル処理機能 1. ファイル操作 ファイルを開く: 指定したファイルが存在しない場合は、対応するオブジェクトが返されます。リソース...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。