PHP 単一ファイル、複数の単一ファイル、および複数ファイルのアップロード機能のパッケージ化
PHP の単一ファイル、複数の単一ファイル、および複数ファイルのアップロード関数のカプセル化
//表单://s.php//要在选择上传文件时能一次选择多个文件,那么就加multiple="multiple" ,还有注意下name="myFile1"和name="myFile[]"的区别,单文件、多文件上传.<!doctype html><html><head><meta charset="utf-8"><title>无标题文档</title></head><body><form action="sss.php" method="post" enctype="multipart/form-data"> <input type="file" name="myFile1" /><br/> <input type="file" name="myFile2" /><br/> <input type="file" name="myFile[]" /><br/> <input type="file" name="myFile[]" /><br/> <input type="file" name="myFile[]" multiple="multiple"/><br/> <input type="submit" value="上传文件"/></form></body></html>//上传函数的封装://ss.php<?phpheader('Content-Type:text/html;charset=utf-8');//构建上传文件信息function getFiles(){ $i=0; foreach($_FILES as $file){ //因为这时$_FILES是个三维数组,并且上传单文件或多文件时,数组的第一维的类型不同,这样就可以拿来判断上传的是单文件还是多文件 if(is_string($file['name'])){ //如果是单文件 $files[$i]=$file; $i++; }elseif(is_array($file['name'])){ //如果是多文件 foreach($file['name'] as $key=>$val){ $files[$i]['name']=$file['name'][$key]; $files[$i]['type']=$file['type'][$key]; $files[$i]['tmp_name']=$file['tmp_name'][$key]; $files[$i]['error']=$file['error'][$key]; $files[$i]['size']=$file['size'][$key]; $i++; } } } return $files;}//针对于单文件、多个单文件、多文件的上传//默认允许上传的文件只为图片类型,并且只有这些图片类型:$allowExt=array('jpeg','jpg','png','gif');并且检查上传的文件是否为真实的图片$flag=true//默认上传保存的文件夹为本地的'uploads'文件夹,允许上传文件的大小最大为2Mfunction uploadFile($fileInfo,$path='./uploads',$flag=true,$allowExt=array('jpeg','jpg','png','gif'),$maxSize=2097152){ //判断错误号 if($fileInfo['error']===UPLOAD_ERR_OK){ //检测上传文件的大小 if($fileInfo['size']>$maxSize){ $res['mes']=$fileInfo['name'].'上传文件过大'; } $ext=getExt($fileInfo['name']); //检测上传文件的文件类型 if(!in_array($ext,$allowExt)){ $res['mes']=$fileInfo['name'].'非法文件类型'; } //检测是否是真实的图片类型 if($flag){ if(!getimagesize($fileInfo['tmp_name'])){ $res['mes']=$fileInfo['name'].'不是真实图片类型'; } } //检测文件是否是通过HTTP POST上传上来的 if(!is_uploaded_file($fileInfo['tmp_name'])){ $res['mes']=$fileInfo['name'].'文件不是通过HTTP POST方式上传上来的'; } if( $res ) return $res; //如果要不显示错误信息的话,用if( @$res ) return $res; //$path='./uploads'; //如果没有这个文件夹,那么就创建一 if(!file_exists($path)){ mkdir($path,0777,true); chmod($path,0777); } //新文件名唯一 $uniName=getUniName(); $destination=$path.'/'.$uniName.'.'.$ext; [email protected],也可以删除 if([email protected]_uploaded_file($fileInfo['tmp_name'],$destination)){ $res['mes']=$fileInfo['name'].'文件移动失败'; } $res['mes']=$fileInfo['name'].'上传成功'; $res['dest']=$destination; return $res; }else{ //匹配错误信息 //注意!错误信息没有5 switch($fileInfo['error']){ case 1: $res['mes'] = '上传文件超过了PHP配置文件中upload_max_filesize选项的值'; break; case 2: $res['mes'] = '超过了HTML表单MAX_FILE_SIZE限制的大小'; break; case 3: $res['mes'] = '文件部分被上传'; break; case 4: $res['mes'] = '没有选择上传文件'; break; case 6: $res['mes'] = '没有找到临时目录'; break; case 7: $res['mes'] = '文件写入失败'; break; case 8: $res['mes'] = '上传的文件被PHP扩展程序中断'; break; } return $res; }}?>//common.ss.php<?php//这两函数也可以一起放到ss.php里面去//得到文件扩展名function getExt($filename){ return strtolower(pathinfo($filename,PATHINFO_EXTENSION));}//产生唯一字符串function getUniName(){ return md5(uniqid(microtime(true),true));}?>//上传后文件的操作:<?phpheader("content-type:text/html;charset=utf-8");require_once 'ss.php';require_once 'common.ss.php';$files=getFiles();//修改允许上传文件的类型,为('jpeg','jpg','png','gif','html','txt'),也可以增加新的,如pdf,pptx等等$allowExt=array('jpeg','jpg','png','gif','html','txt');foreach($files as $fileInfo){ //修改上传保存的文件夹为本地的'imooc',如果没有这个文件夹,那么就创建一个 //'false'参数:不要检查上传的文件是否为真实的图片,因为要允许上传除开图片类型外的其他类型文件,如html、txt $res=uploadFile($fileInfo,'imooc',false,$allowExt); echo $res['mes'],'<br/>'; $uploadFiles[]=$res['dest'];//如果要不显示错误信息的话,用@$uploadFiles[]=$res['dest'];}$uploadFiles=array_values(array_filter($uploadFiles));//这样便于保存到数据库print_r($uploadFiles);//打印查看上传保存的结果?>
- 2Fltx06昨日 20:53
- 「PHP 単一ファイルのアップロード原理とアップロード関数のカプセル化」と「PHP 単一ファイル、複数の単一ファイル、および複数ファイルのアップロード関数のカプセル化」は、MOOC.com のビデオを視聴してまとめられ、My個人的なコメント; PHP ファイルのアップロードについてインターネットでたくさん検索しましたが、最も明確だったのは、自分で整理したときです
- 1 階ltx06昨日 20: 44
- なぜ本物の写真かどうかを検出する必要があるかというと、ユーザーは txt ファイルを作成し、その拡張子を .jpg/png などに変更することで、画像ファイルを作成します。ただし、これは実際の画像ではありません~

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











php提交表单通过后,弹出的对话框怎样在当前页弹出php提交表单通过后,弹出的对话框怎样在当前页弹出而不是在空白页弹出?想实现这样的效果:而不是空白页弹出:------解决方案--------------------如果你的验证用PHP在后端,那么就用Ajax;仅供参考:HTML code

php fileinfo 拡張機能をインストールする方法: 1. PHP インストール ソース ディレクトリを見つけます; 2. phpize を解析して使用して fileinfo モジュールを解放します; 3. コンパイルしてインストールします; 4. PHP を再起動します。

Vue3 での名前の用途は何ですか? 1. 再帰コンポーネントを作成するときに名前を定義する必要がある 2. コンポーネントは keep-aliveincludeexclude でキャッシュできる 3. Vue がエラーを報告するときやデバッグしているときに、コンポーネントの名前が表示される Vue3 では name1 が定義されています。セットアップ構文のシュガー モードがスクリプトでオンになっている限り、自動的に生成されます 単一ファイル コンポーネント 対応する名前オプションは、ファイル名に基づいて自動的に生成されます たとえば、Tree.vue の場合、その名前は Tree によって自動的に生成されますこれには欠点があり、名前を変更したい場合はコンポーネント名も変更する必要があり、コンポーネントをインポートする場所がある場合はそれも一緒に変更する必要があります。 2. スクリプトを開いて名前を定義します

form要素のnameとidの値が異なるとブラウザが認識できないため、PHPが名前を取得できない 解決策: 1. 一部のform要素やframe要素がnameを使用していないか確認する; 2. 取得できる要素のみを確認するID は割り当てられますが、名前は割り当てられません; 3. 複数選択ボックスのチェックボックスでは、「join(',', $__POST['name'])」を使用してデータを形成できます。

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没问题。

写真が消える問題を解決する方法 まず、写真ファイル $file=$_FILES['userfile']; if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner() image_src) VALUES ('images/ {$file['name'

图片消失如何解决先是图片文件上传$file=$_FILES['userfile']; if(is_uploaded_file($file['tmp_name'])){$query=mysql_query("INSERT INTO gdb_banner(image_src ) VALUES ('images/{$file['name'
