ホームページ  >  記事  >  バックエンド開発  >  PHPファイルアップロード例を詳しく解説! ! ! _PHP チュートリアル

PHPファイルアップロード例を詳しく解説! ! ! _PHP チュートリアル

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

first、アップロードパーツのフォームコードを見てみましょう:


コピーコードは次のとおりです。ファイル: 「閲覧」 > /table>
ここで注意すべき点がいくつかあります。まず、
ここでは POST メソッドを使用します。ブラウザは PUT メソッドもサポートしていますが、もちろんこれにはスクリプトの変更が必要です。これはお勧めしません。アップロードされたファイルに通常のフォーム情報が含まれていることをサーバーが認識できるように、Enctype="multipart/form-data をフォームに設定する必要があります。これを設定する必要があることを覚えておいてください。また、最大長を制限するには隠しフィールドが必要です。アップロードされたファイル: < ;input type="hidden" name="MAX_FILE_SIZE" value="2000000">、ここで name は MAX_FILE_SIZE に設定する必要があります、値はアップロードされたファイルの最大長です、単位は B です。 2M までに制限します。 :, type="file" はファイルの種類を示します。これで、基本的なファイルアップロードインターフェイスが完成します。次に、PHP を使用してアップロードされたファイルを処理する方法について説明します。また、php.ini に設定されているアップロード ファイルの最大長は、実際のアップロードに影響を与える可能性があります。また、実際の状況に応じて変更してください。最初に一時ディレクトリにアップロードしてから、指定したディレクトリに移動します。はい、一時ディレクトリは必要に応じて変更することも、デフォルト値を使用することもできます。
それでは、このページの内容を見てみましょう。 :

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




コードをコピーします

コードは次のとおりです:
/******************************************
タイトル: ファイルアップロードの詳しい説明
著者: 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 ディレクトリ関数を使用してファイル管理を実現する方法は初心者エリアで公開されます
興味のある友達が見てくれることを願っています~~~、ありがとう! ! ! ! ! !

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/317506.html技術記事まず、アップロード部分のフォーム コードを見てみましょう。コードを次のようにコピーします: formmethod="post"action="upload.php"enctype="multipart/form-data" tableborder=0cellspacing=0cellpadding=0al。 ..
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。