ホームページ バックエンド開発 PHPチュートリアル PHP 単一ファイル、複数の単一ファイル、および複数ファイルのアップロード機能のパッケージ化

PHP 単一ファイル、複数の単一ファイル、および複数ファイルのアップロード機能のパッケージ化

Jun 13, 2016 pm 12:19 PM
fileinfo name quot

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(&#39;Content-Type:text/html;charset=utf-8&#39;);//构建上传文件信息function getFiles(){	$i=0;	foreach($_FILES as $file){		//因为这时$_FILES是个三维数组,并且上传单文件或多文件时,数组的第一维的类型不同,这样就可以拿来判断上传的是单文件还是多文件		if(is_string($file[&#39;name&#39;])){		//如果是单文件			$files[$i]=$file;			$i++;		}elseif(is_array($file[&#39;name&#39;])){		//如果是多文件			foreach($file[&#39;name&#39;] 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 などに変更することで、画像ファイルを作成します。ただし、これは実際の画像ではありません~
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 php提交表单通过后,弹出的对话框怎样在当前页弹出,该如何解决 Jun 13, 2016 am 10:23 AM

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

php fileinfo拡張機能をインストールする方法 php fileinfo拡張機能をインストールする方法 Sep 12, 2021 am 11:36 AM

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

Vue3でセットアップに名前を追加する方法 Vue3でセットアップに名前を追加する方法 May 13, 2023 am 09:40 AM

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

php が名前を取得できない場合はどうすればよいですか? php が名前を取得できない場合はどうすればよいですか? Nov 24, 2022 am 09:56 AM

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

不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 不用数据库来实现用户的简单的下载,代码如下,但是却不能下载,请高手找下原因,文件路劲什么的没有关问题 Jun 13, 2016 am 10:15 AM

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

为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 为什么小弟我在php上写的这个代码,在浏览器上什么都不显示 Jun 13, 2016 am 10:24 AM

为什么我在php上写的这个代码,在浏览器上什么都不显示啊

写真が消える問題を解決する方法 写真が消える問題を解決する方法 Apr 07, 2024 pm 03:02 PM

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

图片消失怎么解决 图片消失怎么解决 Jun 13, 2016 am 10:09 AM

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

See all articles