Rumah php教程 php手册 PHP单文件上传原理及上传函数的封装

PHP单文件上传原理及上传函数的封装

Jun 21, 2016 am 08:46 AM
break case fileinfo

<!--?php
//单文件上传函数的封装
//文件上传原理:将客户端的文件上传到服务器端,再将服务器端的临时文件移动到指定目录即可。
//文件的方向:客户端——-->服务器(临时文件)&mdash;&mdash;>指定目录,当文件进入服务器时它就是临时文件了,这时操作中要用临时文件的名称tmp_name。
//在客户端设置上传文件的限制(文件类型和大小)是不安全的,因为客户能通过源代码修改限制,所以在服务端这里设置限制。
//设置编码为UTF-8,以避免中文乱码 
header(&#39;Content-Type:text/html;charset=utf-8&#39;);
//通过$_FILES接收上传文件的信息
$fileInfo = $_FILES[&#39;myFile&#39;];
function uploadFile($fileInfo,$uploadPath=&#39;uploads&#39;,$flag=true,$allowExt=array(&#39;jpeg&#39;,&#39;jpg&#39;,&#39;png&#39;,&#39;gif&#39;),$maxSize = 2097152){
//判断错误号,只有为0或者是UPLOAD_ERR_OK,没有错误发生,上传成功
	if($fileInfo[&#39;error&#39;]>0){
		//注意!错误信息没有5
		switch($fileInfo[&#39;error&#39;]){
			case 1:
				$mes= &#39;上传文件超过了PHP配置文件中upload_max_filesize选项的值&#39;;
				break;
			case 2:
				$mes= &#39;超过了HTML表单MAX_FILE_SIZE限制的大小&#39;;
				break;
			case 3:
				$mes= &#39;文件部分被上传&#39;;
				break;
			case 4:
				$mes= &#39;没有选择上传文件&#39;;
				break;
			case 6:
				$mes= &#39;没有找到临时目录&#39;;
				break;
			case 7:
				$mes= &#39;文件写入失败&#39;;
				break;
			case 8:
				$mes= &#39;上传的文件被PHP扩展程序中断&#39;;
				break;
				
		}	
		exit($mes);
	}
	$ext=pathinfo($fileInfo[&#39;name&#39;],PATHINFO_EXTENSION);
	//$allowExt=array(&#39;jpeg&#39;,&#39;jpg&#39;,&#39;png&#39;,&#39;gif&#39;);
	
	//检测上传文件的类型
	if(in_array($ext,$allowExt)){
		exit(&#39;非法文件类型&#39;);	
	}
	
	//检测上传文的件大小是否符合规范
	//$maxSize = 2097152;//2M
	if($fileInfo[&#39;size&#39;]>$maxSize){
		exit(&#39;上传文件过大&#39;);	
	}
	
	//检测图片是否为真实的图片类型
	//$flag=true;
	if($flag){
		if(!getimagesize($fileInfo[&#39;tmp_name&#39;])){
			exit(&#39;不是真实的图片类型&#39;);	
		}	
	}
	
	//检测是否是通过HTTP POST方式上传上来
	if(!is_uploaded_file($fileInfo[&#39;tmp_name&#39;])){
		exit(&#39;文件不是通过HTTP POST方式上传上来的&#39;);	
	}
	
	//$uploadPath=&#39;uploads&#39;;
	//如果没有这个文件夹,那么就创建一个
	if(!file_exists($uploadPath)){
		mkdir( $uploadPath, 0777, true);
		chmod( $uploadPath, 0777 );
	}
	//新文件名唯一
	$uniName = md5 ( uniqid( microtime(true),true) ).&#39;.&#39;.$ext;
	$destination = $uploadPath.&#39;/&#39;.$uniName;
	//@符号是为了不让客户看到错误信息
	if(! @move_uploaded_file($fileInfo[&#39;tmp_name&#39;], $destination )){
		exit(&#39;文件移动失败&#39;);	
	}
	
	//echo &#39;文件上传成功&#39;;
	//return array(
	//	&#39;newName&#39;=>$destination,
	//	&#39;size&#39;=>$fileInfo[&#39;size&#39;],
	//	&#39;type&#39;=>$fileInfo[&#39;type&#39;]
	//);
	return $destination;
}
?>
Salin selepas log masuk



Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

HMD Skyline mendapat pilihan warna baharu dan sarung magnet rasmi HMD Skyline mendapat pilihan warna baharu dan sarung magnet rasmi Aug 23, 2024 am 07:04 AM

Apabila HMD Skyline(tersedia di Amazon pada harga $499) dilancarkan bulan lepas, ia dikeluarkan dalam dua warna - Neon Pink dan Twisted Black. Mereka kini disertai oleh warna ketiga yang digelar Blue Topaz. HMD Global juga telah mengumumkan kes rasmi untuk ph

pembolehubah penghakiman kes suis pembolehubah penghakiman kes suis Feb 19, 2024 am 08:04 AM

Suis memerlukan contoh kod khusus untuk menentukan pembolehubah Dalam pengaturcaraan, kita selalunya perlu melakukan operasi yang berbeza berdasarkan nilai pembolehubah yang berbeza. Pernyataan suis ialah struktur mudah yang membolehkan anda memilih blok kod yang berbeza untuk pelaksanaan berdasarkan nilai pembolehubah. Berikut ialah contoh kod khusus yang menunjukkan cara menggunakan pernyataan kotak suis untuk menentukan nilai pembolehubah yang berbeza: #includeintmain(){

Bagaimana untuk memasang sambungan maklumat fail php Bagaimana untuk memasang sambungan maklumat fail php Sep 12, 2021 am 11:36 AM

Cara memasang sambungan php fileinfo: 1. Cari direktori sumber pemasangan PHP 2. Parse dan gunakan phpize untuk melepaskan modul fileinfo 3. Compile dan install;

Apakah kegunaan pernyataan henti henti dalam bahasa Go? Apakah kegunaan pernyataan henti henti dalam bahasa Go? Jan 18, 2023 pm 03:46 PM

Dalam bahasa Go, penyataan henti henti digunakan untuk melompat keluar dari gelung dalam penyataan gelung dan mula melaksanakan penyataan selepas gelung. Pernyataan putus boleh menamatkan blok kod untuk, tukar dan pilih Selain itu, penyataan rehat juga boleh menambah label selepas penyataan untuk menunjukkan keluar dari blok kod yang sepadan dengan label tertentu blok kod untuk, tukar dan pilih .

Pembelajaran gelung JS: pecahkan kenyataan gelung putus dan teruskan Pembelajaran gelung JS: pecahkan kenyataan gelung putus dan teruskan Aug 03, 2022 pm 07:08 PM

Dalam artikel sebelum ini, kami membawa anda mempelajari beberapa struktur kawalan gelung dalam JS (gelung semasa dan lakukan-sementara, untuk gelung Mari kita bincangkan penyataan rehat dan teruskan untuk keluar dari gelung semua orang!

Apakah kegunaan rehat dalam php Apakah kegunaan rehat dalam php Jan 31, 2023 pm 07:33 PM

Dalam PHP, break digunakan untuk melompat keluar dari struktur sintaks semasa dan melaksanakan pernyataan berikut, ia boleh digunakan dalam pernyataan seperti suis, untuk, sementara, dan lakukan sambil daripada gelung semasa serta-merta, dan laksanakan pernyataan berikut selepas kod. Pernyataan rehat boleh mengambil parameter n, menunjukkan bilangan tahap untuk melompat keluar daripada gelung Jika anda ingin melompat keluar daripada berbilang gelung, anda boleh menggunakan n untuk menunjukkan bilangan tahap untuk melompat keluar parameter, lalai adalah untuk melompat keluar dari gelung semasa.

Mari kita bincangkan tentang tidak menggunakan pemecahan dalam pernyataan suis PHP Mari kita bincangkan tentang tidak menggunakan pemecahan dalam pernyataan suis PHP Mar 20, 2023 pm 04:55 PM

Ia adalah sangat biasa untuk menggunakan pernyataan suis dalam PHP untuk memilih berbilang cawangan Biasanya, pernyataan putus digunakan untuk keluar dari pernyataan suis selepas setiap cawangan. Walau bagaimanapun, terdapat situasi di mana kita tidak mahu menggunakan penyataan rehat Artikel ini akan memperkenalkan situasi tidak menggunakan pemecahan dalam penyataan suis PHP.

Bagaimana untuk menghapuskan suis-case dalam Springboot Bagaimana untuk menghapuskan suis-case dalam Springboot May 14, 2023 pm 07:49 PM

基本逻辑如下:Stringevent=crsRequest.getEvent();CRSResponsecrsResponse=null;switch(event){caseCRSRequestEvent.APP_START:crsResponse=processAppStartCommand(crsRequest);break;caseTECRSRequestEvent.INITComment_RequestEvent.INITCom_RequestEvent

See all articles