- //単一ファイルアップロード機能のカプセル化
- //ファイルアップロードの原理:クライアントファイルをサーバーにアップロードし、サーバー上の一時ファイルを指定されたディレクトリに移動します。
- //ファイルの方向: クライアント -> サーバー (一時ファイル) -> ディレクトリを指定します。ファイルがサーバーに入ると、一時ファイルになります。このとき、一時ファイルの名前は tmp_name として使用されます。操作。
- //顧客がソース コードを通じて制限を変更できるため、クライアントでアップロード ファイルの制限 (ファイルの種類とサイズ) を設定するのは安全ではないため、ここでサーバーで制限を設定します。
- //中国語の文字化けを避けるためにエンコーディングを UTF-8 に設定します
- header('Content-Type: text/html;charset=utf-8');
- //$_FILES を通じてアップロードされたファイル情報を受信します
- $fileInfo = $ _FILES ['myFile'];
- function UploadFile($fileInfo,$uploadPath='uploads',$flag=true,$allowExt=array('jpeg','jpg','png','gif'),$maxSize = 2097152){
- //エラー番号を判断してください。0 または UPLOAD_ERR_OK のみです。エラーは発生せず、アップロードは成功です
- if($fileInfo['error']>0){
- //注意!エラーメッセージは no です。 5
- switch($fileInfo['error']){
- case 1:
- $mes= 'アップロードされたファイルは、PHP 設定ファイルの Upload_max_filesize オプションの値を超えています';
- Break;
- case 2 :
- $mes= 'HTML フォームのサイズ MAX_FILE_SIZE 制限を超えました';
- Break;
- case 3:
- $mes= 'ファイルは部分的にアップロードされました';
- Break;
- case 4:
- $mes= 'オプションなしファイルをアップロードします';
- Break;
- case 6:
- $mes= '一時ディレクトリが見つかりません';
- Break;
- case 7:
- $mes= 'ファイルの書き込みに失敗しました';
- Break;
- case 8:
- $ mes= 'アップロードされたファイルは PHP 拡張プログラム Break によって削除されました';
- Break;
-
- }
- exit($mes);
- }
- $ext=pathinfo($fileInfo['name'],PATHINFO_EXTENSION);
- // $allowExt=array('jpeg',' jpg','png','gif');
-
- //アップロードされたファイルの種類を検出します
- if(in_array($ext,$allowExt)){
- exit('illegalファイルタイプ');
- }
-
- // アップロードしたファイルのファイルサイズが仕様を満たしているか確認します
- //$maxSize = 2097152;//2M
- if($fileInfo['size']>$maxSize){
- exit('アップロードされたファイルが大きすぎます');
- }
-
- //画像が実際の画像タイプかどうかを確認します
- //$flag=true;
- if($flag){
- if(!getimagesize($) fileInfo['tmp_name'])){
- exit('実際の画像ではありません Type');
- }
- }
-
- //HTTP POST 経由でアップロードされているかどうかを確認します
- if(!is_uploaded_file($fileInfo['tmp_name'] )){
- exit('ファイルは HTTP POST 経由でアップロードされていません ');
- }
-
- //$uploadPath='uploads';
- //そのようなフォルダーが存在しない場合は、作成します
- if(!file_exists($) UploadPath)){
- mkdir( $uploadPath, 0777, true) ;
- chmod( $uploadPath, 0777 );
- }
- //新しいファイル名は一意です
- $uniName = md5 ( uniqid( microtime(true),true) ).'.'.$ext;
- $destination = $uploadPath. '/'.$uniName;
- //@ 記号は、顧客にエラー メッセージが表示されないようにするためのものです
- if(! @move_uploaded_file($fileInfo['tmp_name' ], $destination )){
- exit('ファイルの移動に失敗しました') ;
- }
-
- //echo 'ファイルは正常にアップロードされました';
- //return array(
- // 'newName'=>$destination,
- / / 'size'=>$fileInfo['size'],
- // 'type'=>$fileInfo['type']
- //);
- return $destination;
- }
- ?>
-
コードをコピー
|