PHPアップロード画像操作フロー


まず、アップロード部分のフォームコードを見てみましょう.
CODE:      <form method="post" action="upload.php" enctype="multipart/form-data">
     <table border=0 cellspacing=0 cellpadding=0 align=center width="100%">
      <tr>
        <td width=55 height=20 align="center"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"> : </TD>
        <td height="16">
        <input name="file" type="file"  value=" " >
         
        < input type="submit" value=" " name="B1">
        </td>
      </tr>
     </table>
     </form>
     
ここで注意すべき点はいくつかありますが、まずこの
を見てみましょう.ここではPOSTメソッドを採用しています.個別のブラウザではPUTメソッドもサポートされています.もちろん、スクリプトを修正する必要があります.私はそうはお勧めしません.フォームにenctype="multipart/form-dataを設定する必要があります.これにより、サーバはアップロードファイルに通常のフォーム情報が含まれていることを知っています.これは設定する必要があることを覚えておいてください.また、アップロードファイルの最大長を制限する隠しドメインが必要です:,ここでnameはMAX_FILE_SIZEに設定する必要があります.その値はアップロードファイルの最大長で、単位はBです.ここでは2 Mに制限します.,type="file"ファイルのタイプを説明して、このような基本的なアップロードファイルのインタフェースは完成して、次にPHPでアップロードしたファイルを処理する方法を話して、それからあなたのphp.iniで設定したアップロードファイルの最大長さは実際のアップロードに影響する可能性があります.実際の状況に応じて修正してください.PHPのアップロードはまず一時ディレクトリに転送され、指定されたディレクトリに移動します.一時ディレクトリは、必要に応じて変更するか、デフォルト値を使用します.はい、フォームをuploadに提出します.php、このページを見てみましょう:[php]」;}//生成先ファイルのファイル名else{$filename=explode(.",$FILES['file'][name']);do{$filename[0]=random(10);//乱数長$name=implode(".",$filename);             //$name1=$name.".Mcncc";             $uploadfile=$uploaddir.$name; }while(file_exists($uploadfile);if(move_uploaded_file($_FILES['file']['tmp_name'],$uploadfile){if(is_uploaded_file($_FILES['file']['tmp_name']){//出力ピクチャプレビューecho「
ファイルのアップロードが完了しました.画像プレビュー:

」;echo"
继续应用程序
";}else{echo「アップロード失敗!」;              }         }    } ?> [/php]これを见るとちょっと気を失うかもしれませんが~~、大丈夫です.私の话を闻くと、実はこれはSO EASY!!まず原理を言います.このプログラムはアップロード画像を例に、まずファイルタイプが画像フォーマットかどうかを判断します.もしアップロードファイルであれば、ランダム数と时间の组み合わせでファイルの名前を変更します.(アップロードファイルの重複を避ける必要があります!)、次に指定されたディレクトリにファイルをアップロードし、正常にアップロードされるとアップロードされた画像プレビューを出力します.ここではプログラムのいくつかの関数について説明します.まずreturn substr(strrchr($filename,'.')、1)、strrchar()関数がどのような役割を果たすかを見てみましょう.例を挙げると、例えば画像ファイルpic.jpg、strrchrで処理し、strrchr(pic.jpg,'.')あ、.jpgを返します.分かりましたか.この関数は、指定した文字列が最後に表示された位置の文字を返します.substr()に合わせて私たちはjpgを取ることができて、このように私達はファイルの接尾辞の名前を得て、アップロードするファイルが指定のフォーマットに合うかどうかを判断します.本プログラムは指定のフォーマットを1つの配列の中に置いて、実際に使う時必要に応じて追加することができます.次に乱数のファイル名の部分を生むことを見て、私達はmt_srand()のこの関数を見て、マニュアルの上で彼を呼びます「より良い乱数発生器のシードを播く」とは、実は乱数の関数を初期化することであり、パラメータは(double)microtime()である.*1000000、ここではこれがパラメータでなければ自動的に乱数を設定します.もちろんこれは私たちのニーズに合わないので、乱数は一定の長さを備えており、アップロードファイルが重複しないことを保証します.次に、ファイルタイプを判断する関数を呼び出し、小文字strtolower(fileext($_FILES['file']['name']))に変換します.ああ、ここには重要な東東$_FILESがあります.これはスーパーグローバル配列で、処理するフォームデータを保存しています.register_globalsを開いたら、直接アクセスすることもできますが、これは安全ではありません.さっきのアップロードインタフェース,このフォーム名によって,$_FILES['file'][name']--ファイル名$_FILES['file'][ttmp_name']--一時記憶場所$_FILES['file']['size']--ファイルサイズ$_FILES['file'][type']を得る--ファイルMIMEタイプを手に入れると、簡単にファイルの情報を判断できるようになりますが、便利ではないでしょうか?^^、次にはいくつかの関数を理解する必要があります.file_exists()--指定されたディレクトリが存在するかどうかを判断します.存在しないと、もちろんアップロードできません(くだらない話のようです!)、move_uploaded_file--アップロードファイルを指定ディレクトリに移動し、is_uploaded_file--ファイルがHTTP POSTでアップロードされたかどうかを判断します.アップロードに成功したら、プレビューを出力します.そうしないと、アップロードに失敗します.これによって、JSと協力してマルチファイルアップロードを実現することができます.例えばDZのアップロード効果、さらに深くAJAXと結合して更新なしアップロードを実現することができます多くのブログで采用されていますが、最后に次の2つのオリジナル文章の予告を放送します1私はこの例を拡大して、バックグラウンドとデータベースの部分を増やして、アップロードファイルの管理を実现して、审査して、オリジナル区に発表します.