/******************************************
タイトル: ファイルアップロードの詳しい説明
著者: leehui1983( ボス・フイ)
終了日:2006-12-28
*********************************** **** ****/
$uploaddir = "./files/";//ファイルの保存ディレクトリを設定します。 include/ に注意してください。
$type=array("jpg","gif ","bmp ","jpeg","png");//アップロードを許可するファイルの種類を設定します
$patch="http://127.0.0.1/cr_downloadphp/upload/files/";//プログラムが配置されているパス
// ファイル拡張子関数を取得する
function fileext($filename)
{ return substr(strrchr($filename, '.'), 1)
// ランダムなファイル名を生成する function
functionランダム($length)
{
$hash = 'CR-';
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() 1000000); for($i = 0; $ i < $length; $i++)
}
$a= strto lower(fileext($_FILES['file ']['name']));
//ファイルを決定するtype
if(!in_array(strto lower(fileext($_FILES['file']['name'])),$type))
{
$text =implode(",",$type)を使用して を使用してusing using using using using ' through ‐ ‐ off ‐ ‐ ‐ ‐ および , to filename=explode(".",$_FILES['file']['name']) de( ".",$ファイル名); I While (File_exists ($ UploadFile));
if (move_uploaded_file ($ _ files ['file'] ['tmp_name'], $uploadFile) {
IF (is_uploaded_file ( $ _Files ['file'] ['tmp_name' ])) {输 // 出力画像プレビュー
echo "& lt; center & gt; ファイルがアップロードされました アップロードされた画像プレビュー: & lt;/center & lt; & lt; & lt; & lt; & lt; & lt; ファイル '& gt ;";
echo"
アップロードを続行< ;/center&gt; ";
}
?&gt;
これらを読んだ直後は少しめまいがするかもしれません~~、しかし、それは問題ではありません、私の話を聞いてください、これが実際にはとても簡単であることがわかるでしょう! !まず、原理を説明します。このプログラムは、写真のアップロードを例に挙げて、ファイルの種類が画像形式であるかどうかを判断し、そのファイルの名前を乱数と時刻の組み合わせで変更します。 ! を使用してファイルをアップロードしないようにする必要があります。アップロードが成功すると、アップロードされた画像のプレビューが出力されます。ここでは、プログラム内のいくつかの関数について説明します。まず return substr(strrchr($filename, '.'), 1) を見てみましょう。 strrchar() 関数の役割は何ですか? 例として、pic.jpg などを見てみましょう。 strrchr( pic.jpg,'.') を使用して処理すると、.jpg が返されます。この関数は、文字列内で指定された文字が最後に出現した後の文字を返します。 substr() を使用すると jpg を取得できるため、ファイル拡張子を取得して、アップロードされたファイルが指定された形式に準拠しているかどうかを判断できます。このプログラムは、指定された形式を配列に配置し、実際の使用中に必要に応じて追加できます。
次に、乱数を生成するファイル名を見てみましょう。マニュアルでは、これを「より良い乱数ジェネレータのシードを播く」と呼んでいます。パラメータは次のとおりです。 ( double)microtime() * 1000000。これがパラメータでない場合、もちろん、これはニーズを満たしません。このようにして、乱数は一定の長さになります。アップロードされたファイルには同じ名前がありません。次に、関数を呼び出してファイルの種類を決定し、それを小文字の strto lower(fileext($_FILES['file']['name'])) に変換します。ここには非常に重要な点があります。これはスーパー グローバルです。 register_globals がオンになっている場合は、配列に直接アクセスすることもできますが、これは安全ではありません。今アップロード インターフェースを見てください このフォーム名に基づいて、多くの情報を取得できます:
$_FILES['file'] ['name'] -- ファイル名を取得します
$_FILES['file']['tmp_name']-- 一時的な保存場所を取得します
$_FILES['file']['size']-- ファイル サイズを取得します
$_FILES['file'] ['type'] -- ファイルの MIME タイプを取得します
この情報があれば、ファイルの情報を簡単に判断できます。とても便利ではないでしょうか。 ^_^、次に理解する必要がある関数がいくつかあります。file_exists() -- 指定されたディレクトリが存在するかどうかを確認します。存在しない場合は、もちろんアップロードできません (ナンセンスのようです!)、move_uploaded_file -- です。アップロードされたファイルを指定されたディレクトリに移動します。is_uploaded_file- - ファイルが HTTP POST 経由でアップロードされたかどうかを判断します。アップロードが成功するとプレビューが出力されますが、そうでない場合は出力のアップロードは失敗します。これで完了です
これをベースに、DZ のアップロード効果など、JS を使用して複数ファイルのアップロードを実現し、AJAX と組み合わせることで、多くのブログで採用されている更新不要のアップロードを実現するなど、拡張することができます。最後に、次の 2 つの元の記事のプレビューを再生します
1 この例を拡張し、バックエンドとデータベースの部分を追加し、アップロードされたファイルの管理とレビューを実装して、元の領域に公開します。
2 ディレクトリ関数を使用してファイル管理を実現する方法は初心者エリアで公開されます
興味のある友達が見てくれることを願っています~~~、ありがとう! ! ! ! ! !
http://www.bkjia.com/PHPjc/317506.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/317506.html技術記事まず、アップロード部分のフォーム コードを見てみましょう。コードを次のようにコピーします: formmethod="post"action="upload.php"enctype="multipart/form-data" tableborder=0cellspacing=0cellpadding=0al。 ..