ホームページ > php教程 > php手册 > PHPファイルアップロード例を詳しく解説! ! !

PHPファイルアップロード例を詳しく解説! ! !

WBOY
リリース: 2016-06-13 12:35:09
オリジナル
1101 人が閲覧しました

まず、アップロード部分のフォーム コードを見てみましょう。

コードをコピーします コードは次のとおりです。

< form method="post" action="upload.php" enctype="multipart/form-data">


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

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




コードをコピーします


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

/******************************************
タイトル: ファイルアップロードの詳しい説明
著者:leehui1983(Hui Boss)
終了日:2006-12-28
*************************** **** ************/
$uploaddir = "./files/";//ファイル保存ディレクトリを設定します。 /
$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); XYZ0123456789abcdefghijklmnopqrstuvwxyz';
$max = strlen($chars) - 1;
mt_srand((double)microtime() * 1000000);
for($i = 0; $i <$length; $i )
{<> $ ハッシュ. = $ Chars [mt_rand (0, $ max)];
戻り値$ ハッシュ;
}
$ a = Strto lower (FileExt ($ _ files ['files [' files ['files [' files ['files [' files ['files ']['name'])) ;
//ファイルの種類を決定します
if(!in_array(strto lower(fileext($_FILES['file']['name'])),$type))
{
$text= implode(",",$type);
echo "次の種類のファイルのみをアップロードできます: ",$text,"
" > //ターゲット ファイルのファイル名を生成します> $ filename[0]=random(10); //乱数の長さを設定します
$uploadfile=$uploaddir.$name;
while(file_exists($uploadfile));
if (move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile)){

if(is_uploaded_file($_FILES[ 'file']['tmp_name'])){
//出力画像プレビュー
center>"; ;アップロードを続行 ";
>

これを初めて読むときは少しめまいがするかもしれません ~~ でも、それは問題ではありません。私の話を聞いてください。これが実際にはとても簡単であることがわかるでしょう! !まず原理を説明します。このプログラムは、写真のアップロードを例に挙げます。まず、ファイルの種類が画像形式であるかどうかを判断し、ファイルの名前を乱数と時刻の組み合わせで変更します。 ! を使用してファイルをアップロードしないようにする必要があります。アップロードが成功すると、アップロードされた画像のプレビューが出力されます。ここでは、プログラム内のいくつかの関数について説明します。まず 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 ディレクトリ関数を使用してファイル管理を実現します。これは初心者エリアで公開されます。
興味のある友達が見てくれることを願っています~~~、ありがとう! ! ! ! ! !

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート