$filename="./files.text";
$fp=fopen($finename,"rb");
$encho fread($fp,100);
?>
div>
readfile()、file()、および file_get_contents() 関数。
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 file_get_contents(string filename[,bool use_include_path[,resource context[,int offset [,int maxlen]]]]);//context は 5.0 の新しいコンテンツであり、NULL で無視できます。 offset、maxlen は 5.1 の内容です。 offset はファイルの開始位置をマークするために使用され、maxlen は読み取られるファイルの長さを設定します。この方法はバイナリ ファイルの読み取りに適しています。ファイルの内容を文字列に読み取るための推奨される方法です。オペレーティング システムでサポートされている場合は、パフォーマンスを向上させるためにメモリ マッピング テクノロジも使用されます。特殊文字 (スペースなど) を含む URL を開く場合は、urlencode() を使用して URL をエンコードします。
備考: readfile()、file()、および file_get_contents() は、フォルダー全体の内容を読み取る場合は fopen() および fclose() 関数を使用する必要はありませんが、1 文字、1 行を読み取る場合には、 fopen() および fclose() 関数を使用する必要はありません。文字と任意の長さの文字。
2. ファイルに書き込みます:
int fwrite(resource handle,string[,int length]);//ファイル書き込み操作を実行します。これにはエイリアスもあります。 fputs(). このメソッドは、文字列の内容をファイル ポインタ ハンドルに書き込むために使用されます。 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]);//path は、開くディレクトリ ファイルを指定します。指定されたパスが有効なディレクトリではない場合、または権限の問題によりファイル システム エラーが発生して開けない場合、この関数は 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);//handle、閉じる作業ディレクトリのハンドル。
注: 以前に学んだように、開かれたディレクトリが存在しない場合、システムはディレクトリを作成しません。次に、必要なディレクトリを自分で作成できます。次の関数を適用できます。
mkdir() 関数: 新しいディレクトリを作成し、成功した場合は true を返し、それ以外の場合は false を返します。
rmdir() 関数: ディレクトリを削除します。ディレクトリは空である必要があり (ディレクトリ内にファイルやサブディレクトリが存在しない)、操作権限が必要です。
Unlink() 関数: ファイルを削除し、成功した場合は true、失敗した場合は false を返します。
ファイルのアップロードとダウンロードの原則ステップの内容:
ステップ 1: アップロードされたファイルを制御し、php.ini ファイルを通じて設定します。
ステップ 2: アップロードされたファイルを判断します。アップロードするファイルのサイズや形式など
ステップ3:ファイルをアップロードする操作方法を実行します。
1. アップロードされたファイルの制御: PHP は、アップロードをサポートするかどうか、アップロードされたファイルの一時ディレクトリ、アップロードをサポートするかどうかなど、php.ini を通じてアップロードされたファイルを制御します。ファイルのサイズ、命令の実行時間、命令によって割り当てられたメモリ空間。
php.ini ファイルでファイル アップロード オプションを見つけ、上記のオプションの設定を完了します。オプションの意味は次のとおりです:
File_uploads: オンの場合はサーバーがファイルのアップロードをサポートしていることを意味し、オフの場合はサポートされていません。通常、これはデフォルトでサポートされており、このオプションを変更する必要はありません。
Upload_tem_dir: ファイルをアップロードするための一時ディレクトリ。ファイルのアップロードが成功する前に、ファイルはまずサーバーの一時ディレクトリに保存されます。ほとんどの場合、システムのデフォルト ディレクトリが使用されますが、自分で設定することもできます。
Upload_max_filesize: サーバーがアップロードできるファイルの最大サイズ (MB 単位)。システムのデフォルトは 2MB ですが、それを超える場合は値を変更する必要があります。
max_execution_time: php のコマンドを実行できる最大時間 (秒単位)。非常に大きなファイルをアップロードする場合は、このコマンドを変更する必要があります。変更しないと、ファイルのタイムリーなアップロードはサーバーによって許可される範囲内になりますが、コマンドの実行可能な最大時間を超える場合は、やはりアップロードできません。
Memory_limit: php のコマンドによって割り当てられるメモリ空間 (MB 単位)。そのサイズは、非常に大きなファイルのアップロードにも影響します。
備考: クライアントでアップロードされたファイルのアプリケーションを制御する場合、フォームフォームの enctype 属性とメソッド属性、および隠しフィールド MAX_FILE_SIZE が制御されます。
Enctype="multipart/form-data":フォームエンコードデータ方式を指定します。
Method="post": データ送信の方法を指定します。
: 隠しフィールドを使用して、アップロードされるファイルのサイズをバイト単位で制御します。この値は、php.ini 設定ファイルの Upload_max_filesize オプションで設定された値を超えることはできません。アップロードされるファイルのサイズを完全に制御することはできず、不必要なトラブルを回避することしかできません。
2. アップロードされたファイルを判断する
アップロードされたファイルを判断するには、グローバル変数 $_FILES が使用されます。$_FILES は、アップロードされたすべてのファイルに関する情報を含む配列です。配列内の各要素の意味は次のとおりです。
$_FILES[ファイル名][名前]: 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]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'] のような変数である必要があります。クライアントからアップロードされたファイル名は使用できません。$_FILES['filename']['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']){
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指南。