ホームページ >バックエンド開発 >PHPチュートリアル >PHPファイルシステム
ファイル管理レター
1. ファイル操作
指定されたファイルを開き、関連するオブジェクトを返します。指定されたファイルが存在しない場合は、自動的に作成されます。
resource fopen(string filename,string mode [,int use_include_path][,resource context]);
filename は、ファイルパスを含むファイル名にすることも、特定のプロトコルで指定された URL (ファイルを開くため) にすることもできます。リモートファイル)を避けるため、パス区切り文字として「/」を使用します。
モード: ファイルを開く方法をそれぞれ設定します:
r: 読み取り専用モード、ファイル。ポインタはファイルの先頭にあります
r+: 読み取り専用モード ---- 読み取り/書き込みモード、ファイルポインタはファイルの先頭にあります
w: 書き込み専用です。ファイルが存在する場合は、ファイルの先頭にファイルポインタが配置されます。存在しない場合は、自分でファイルを作成します。
w+: 書き込み専用モード ---- の読み取りと書き込み。ファイルの場合、読み取り/書き込みファイル ポインタはファイルの先頭を指します。ファイルが存在する場合は、内容を削除して書き換えます。そうでない場合は、自分でファイルを作成します。
×: 慎重に書き込みます ----ファイルを開きます。書き込みモードでファイルの先頭から書き込みます。ファイルが存在する場合は false を返し、E_WARNING レベルのエラー メッセージを生成します
x+: 慎重に書き込みます---ファイルが存在する場合は、ファイルを読み取り書き込みモードで開きます。 false を返し、E_WARNING レベルのエラー メッセージを生成します
a: 追加、ファイルが存在する場合は、ファイルの最後に直接追加します
。 a+: ファイルポインタはファイル末尾を指します。ファイルが存在する場合は、ファイルの最後に直接追加します。
b: 他のモードとリンクするために使用されます。 . (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() は、読み取りデータの長さを表します。改行、EOF に遭遇した場合、または長さを指定すると、行の末尾まで読み込まれます。 ,string allowed_tags]);// 行を読み込んでフィルタリング html タグと php タグを削除します
String fread(int handle, int length);// ファイルから任意の長さのテキストを取得します。 、バイナリ ファイルを抽出するために使用できます。 handle はファイルのソースを指し、length は長さの文字を取得するか、EOF に遭遇したときに実行を停止します。
例子:<?php $filename="./files.text"; $fp=fopen($finename,"rb"); $encho fread($fp,100); ?>
readfile()、file()、および file_get_contents() 関数?.
int readfile(string filename[,bool use_include_path,resource context]);// ファイルを取得し、成功した場合は戻ります???取得した単語、それ以外の場合は false を返します。ファイル名 ファイル名。 ??use_include_path は、include_path でのファイルの検索をサポートするかどうかを制御します。true?Supported。 readfile 関数を使用してファイルを開いたり書き込んだりする必要はありません。
array file(string filename [,bool use_include_path[,resource context]]);//ファイル全体の内容をファイルに取得します。成功した場合、?? の各要素は、? の行文字を含む、ファイル内の 1 行になります。それ以外の場合は、 false を返します。 ,int offset[,int maxlen]]]);//context は 5.0 で追加された新しいコンテンツであり、NULL で無視できます。オフセット、最大長 = 5.1。 offset はファイルの開始位置を決定するために使用され、maxlen はファイルの長さを設定するために使用されます。このメソッドはバイナリ ファイルを取得するために使用されます。これは、ファイルの内容を文字列にインポートする最初の方法です。オペレーティング システムでサポートされている場合は、メモリ マッピング テクノロジを使用してパフォーマンスを向上させることができます。特殊文字 (スペースなど) を含む URL を開いた場合は、urlencode() を使用して URL を実行します。
??: readfile()、file()、および file_get_contents() は、ファイルの内容を四捨五入するときに fopen() および fclose() 関数を使用する必要はありませんが、文字、文字行をフェッチするときは関数を使用する必要はありません。 、任意の文字列を使用する必要があります。
2. ファイルのインポート:
int fwrite(resource handle, string[,int length]);// ファイルのインポート操作を実行します。文字列の内容をファイル ポインター ハンドルに入力するための名前付き fputs() メソッドがあります。 。長さが設定されている場合は、長さの文字列が入力されるか、文字列の入力が完了すると動作が停止します。入力が成功した場合は 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:設定があります)。コンテキスト_コンテキスト_ソース。
エラー: fwrite() にはファイルをインポートする機能がありますが、fopen() および fclose() 関数でサポートされている必要があります。 file_put_contents() は、ファイルの入力を完了できる fopen()、fwrite()、および fclose() の関数を統合します。
3. ファイルを保存する
ファイル操作が完了すると保存機能が使用できるようになりますが、これにより問題が発生する可能性があります。
bool fclose(resource handle);//handle?? が指すファイル、成功した場合は true を返し、そうでない場合は false を返します。
ファイルの確認
データをテキスト ファイルにインポートするときは、他のユーザーがこのファイルの内容を同時に変更できないように、最初にファイルを確認する必要があります。 php では、ファイルの定義を決定するために flock() 関数が使用されます。
bool flock(int handle,intoperation);//操作制御には一定の制限があります。以下を含みます: lock_sh: 共有設定を取得します (取得プログラム)。 lock_ex: ロックイン(ロックイン)を取得します。施錠開錠。 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 を返します。
ファイルのアップロードとアンロードの原則 ファイル内のusoidsに彼女を渡します
|
|
ステップ2:判定用ファイルをアップロードします。ファイルサイズ、フォーマットなどはオンですか?
ステップ3:ライン上のファイルを操作する方法。
1. アップロードされたファイルを制御する:
PHP は、アップロードをサポートしているかどうか、アップロードされたファイルの宛先、アップロードされたファイルのサイズ、コマンドのサイズなど、アップロードされたファイルを制御できます。実行は、コマンドによって割り当てられたメモリ空間を示します。
php.ini ファイル内のファイルアップロードタブを見つけて、上記の手順の設定を完了します。内容は以下の通りです:
file_uploads: onの場合はサーバーがファイルアップロードをサポートしていることを示します。offの場合はサポートしていません。通常、デフォルト設定がサポートされており、この設定を変更する必要はありません。
upload_tem_dir: アップロードされたファイルのディレクトリ。ファイルのアップロードが成功する前に、ファイルはまずサーバーのインストール ディレクトリに保存されます。通常はシステムのデフォルトのディレクトリが使用されますが、自分で設定することもできます。
Upload_max_filesize: サーバーがアップロードできるファイルの最大サイズ (MB 単位で測定)。システムのデフォルト設定は 2MB ですが、2MB を超える場合は値を変更してください。
Max_execution_time: php のコマンドが実行できる最大時間、数字は秒です。非常に大きなファイルを実行する場合は、このコマンドを変更する必要があります。そうしないと、アップロードされたファイルはサーバーの許容サイズ内で削除されますが、「superior」コマンドで実行できる最大サイズは変更できません。
Memory_limit: php のコマンドによって割り当てられたメモリ空間 (MB 単位)。そのサイズは、非常に大きなファイルの先頭にも影響します。
?: クライアントのファイルに使用されるフォーム テーブルの enctype プロパティとメソッド プロパティ、および隠しフィールド MAX_FILE_SIZE を制御します。
enctype="multipart/form-data":指定表?????方式。
method="post":指定????的方式。
927ba4df1e2ceb9a35adc820fdf66afc:通??藏域控制上?文件的大小,?位?字?。?值不能超?php.ini配置文件中的upload_max_filesize???置的值。它不能完全控制上?文件的大小,只能避免一些不必要的麻?。
2.判?上?文件
?上?文件?行判??用的是全局?量$_FILES,$_FILES是一???,它包含所有上?文件的信息。??中各?元素含?如下:
$_FILES[filename][name]:存?上?文件的文件名,如text.txt,title.jpg等。
$_FILES[filename][size]:存?文件的大小,?位?字?。
$_FILES[filename][tem_name]:存?文件在??目?中使用的文件名,因?文件在上??首先要?其以??文件的身份存?在??目?中。
$_FILES[filename][type]:存?上?文件的MIME?型。MIME?定各?文件格式的?型,每?MIME?型都?由“/”分隔的主?型和子?型?成。例如:"image/gif"的主?型??像,子?型?GIF格式的文件。"text/html"代表文本的HTML文件。
$_FILES[filename][error]:存?文件上?的??代?:此?目?PHP4.2.0版本中新增?容。它的返回值由5?:
0:表示?有任何??。文件上?成功。
1:表示上?文件的大小超出配置文件指令upload_max_filesize??的限定值。
2:表示上?文件的大小超出HTML表?中max_file_size??所指定的值。
3:表示文件只被上?了一部分。
4:表示?有上?任何文件。
例子:<?php /*判?是否由上??片*/ if(!empty($_FILES['up_picture'][name])){ /*??片信息?值??量*/ $type=strtolower(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]."<br/>"; echo "上?文件?型:".$type."<br/>"; echo "上?文件大小:".$_FILES['up_picture'][size]."<br/>"; }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’]的?量,不可以使用?客?端上?的文件名$_FILES[‘filename’][‘name’]。
move_upload_file(string filename,string destination);//?函?用於?文件上?到服?器中指定的位置。如果成功,?返回true,否?返回false。filename指定上?文件的??文件名,即$_FILES['tmp_name'],??destination指定文件上?後保存的新路?和名?。如果??不是合法的上?文件,不?出?任何操作,?函??返回false。如果是合法的上?操作,但是由於某些原因?法移?,?不?出?任何操作,返回false的同????出一?警告。
<?php if( !empty($_FILES[ 'up_picture' ][ 'name' ])){ if( $_FILES['up_picture']['error'] > 0){ echo "上???!"; switch($_FILES['up_picture']['error']){ case 1: echo "上?文件超出配置文件?定值"; break; case 2: echo "上?文件超出表??定值"; break; case 3: echo "上?文件不全"; break; case 4: echo "?有上?文件"; break; } }else{ if( ! is_dir('./upfile/') ) mkdir('./upfile/'); $path='./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 "文件".time().$_FILES['up_picture' ][ 'name' ] ."上?成功,大小?:".$_FILES['up_picture' ][ 'size' ] ; } }else{ echo "上?文件".$_FILES['up_picture' ][ 'name' ]."不合法"; } } }?>
4.文件下?
??介?通?http方式下?文件,主要用到header()函?。header()函??於HTTP函?,其作用是以HTTP?HTML文?的表?送到??器,?告???器具?怎??理???面。
void header(string string[,bool replace[,int http_respone_code]]);//??string 指定?送的??。??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指南。