`

第13章 上传文件

 
阅读更多

Demo1.php

<form enctype="multipart/form-data" action="Demo2.php" method="post">
	<input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
	上传文件: <input type="file" name="userfile" />
	<input type="submit" value="上传" />
</form>

 

Demo2.php

<?php
	//接受上传文件
	//$_FILES;
	//存在,但是空值
	//[userfile][name] 表示上传的文件名
	//[userfile][type] 表示文件类型:例如,jpg 的文件类型为:image/jpeg
	//[userfile][tmp_name]表示上传的文件临时存放的位置 C:\WINDOWS\temp\php28.tmp
	//[userfile][error]表示错误类型,表示没有任何错误。
	//[userfile][size]表示上传文件的大小
	print_r($_FILES);
	echo '<br/>';
	//is_uploaded_file -- 判断文件是否是通过 HTTP POST 上传的
	//通过 HTTP POST 上传后,文件会存放在临时文件夹下
	
	$fileMimes = array('image/jpeg','image/pjpeg','image/gif','image/png','image/x-png');
	//判断类型是否是数组里的一种
	if(is_array($fileMimes)){
		if(!in_array($_FILES['userfile']['type'],$fileMimes)){
			echo "<script>alert('本站只允许 jpg,png,gif 图片');history.back();</script>";
			exit;
		}
	}
	
	//创建一个常量
	define('URL',dirname(__FILE__).'\uploads');
	echo URL;
	
	//判断目录是否存在
	if(!is_dir(URL)){
		mkdir(URL,0777); //最大权限0777,意思是如果没有这个目录,那么就创建
	}
	
	
	define('MAX_SIZE',2000000);
	if($_FILES['userfile']['size'] > MAX_SIZE){
		echo "<script>alert('上传不得超过 2 M');history.back();</script>";
		exit;
	}
	
	//还有两个问题要验证
	
	//第二个问题,只允许 JPG 文件
//	if($_FILES['userfile']['type'] != 'image/jpeg' && $_FILES['userfile']['type'] != 'image/pjpeg'){
//		echo "<script>alert('本站只允许 JPG 图片');history.back();</script>";
//		exit ;
//	}

//	switch ($_FILES['userfile']['type']){
//		case 'image/jpeg'://火狐
//			break;
//		case 'image/pjpeg':
//			break;
//		case 'image/gif':
//			break;
//		case 'image/png'://火狐
//			break;
//		case 'image/x-png'://IE
//			break;
//		default:  echo "<script>alert('本站只允许 jpg,png,gif 图片');history.back();</script>";
//		exit ;
//	}
	
	//第一个问题,如果上传错误,怎么办
	if($_FILES['userfile']['error']>0){
		switch ($_FILES['userfile']['error']){
			case 1:echo "<script>alert('上传文件超过约定值1');history.back();</script>";
			break;
			case 2:echo "<script>alert('上传文件超过约定值2');history.back();</script>";
			break;
			case 3:echo "<script>alert('部分被上传');history.back();</script>";
			break;
			case 4:echo "<script>alert('没有被上传');history.back();</script>";
			break;
		}
		exit;
	}
	
	if(is_uploaded_file($_FILES['userfile']['tmp_name'])){
		//就在这里移动了
		//move_uploaded_file -- 将上传的文件移动到新位置
		//第一个参数,写上临时文件的地址,
		//第二个参数,第二个参数要写上你要存在的地址
		//先去判断这个目录是否存在
		//如果想屏蔽掉警告,直接加上 @
		if(!move_uploaded_file($_FILES['userfile']['tmp_name'],URL.'/'.$_FILES['userfile']['name'])){
			//如果移动失败,就失败
			echo '移动失败';
			exit;
		}
	}else{
		echo "<script>alert('临时文件夹找不到上传的文件');history.back();</script>";
		exit;
	}
	//全部通过就上传成功了
	//必须传一个值给Demo3.php
	//文件上传的地址
	echo "<script>alert('文件上传成功');location.href='Demo3.php?url=".$_FILES['userfile']['name']."';</script>";
?>

 

Demo3.php

<?php
	$url = $_GET['url'];
	echo "<img src=\"uploads/".$url."\"/>";	
?>

 

 

 

 

分享到:
评论

相关推荐

    C++网络编程实例文件之第十章 多线程网络文件传输的设计与实现

    C++网络编程实例文件,里面包含各个章节的C++源码。 第一章 网络通信基础 第二章 认识Windows编程模型 第三章 网络基本应用在VC++中的实现 第四章 串口通信及其实例 第五章 应用层协议及编程实例...第十三章 telnet bbs

    unity3d游戏入门第13-14章

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    unity3d游戏入门第二章开发环境.rar

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    unity3d游戏入门第11-12章

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    PHP全套教学书籍PDF版 李严恢

    8. **第13章 上传文件**:文件上传是Web开发中的常见需求,本章会讲解HTTP表单上传文件的原理,以及PHP中处理文件上传的函数,如$_FILES数组、move_uploaded_file等。 9. **第14章 处理图像**:PHP可以进行基本的...

    PHP程序设计第2版

    第13章 PHP 5.1 第14章 表单和导航提示 第15章 处理文件上传 第16章 网络 第17章 PHP和LDAP 第18章 会话处理器 第19章 用Smarty模板化 第20章 Web服务 第21章 安全PHP编程 第22章 SQLite 第23章 PDO介绍 第24章 ...

    unity3d游戏入门第三章了解编译器

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    unity3d游戏入门第一章 .rar

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23章 UI事件...

    unity3d游戏入门第18-20章

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    unity3d游戏入门第15-17章

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    unity3d游戏入门第五章----游戏对象

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    unity3d游戏入门第21-24章.rar

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    unity3d游戏入门第四章----场景与游戏对象

    第13章 鼠标事件处理 第14章 脚本的运行 第15章 预制体 第16章 (练习) 子弹发射 第17章 物理系统 第18章 碰撞检测 第19章 (练习)飞机大战 第20章 音频播放 第21章 延时与消息调用 第22章 交互界面UI 第23...

    全国计算机二级C语言等级考试视频教程-1-5章

    计算机二级C语言等级考试,43小时,3.3g,视频教程,由于一次只能上传1g,所以分3个资源上传 目录: 第01章 程序设计 ...第13章 宏昔换 第14章 结构体 第15章 位运算符及其功能 第16章 六组文件函数的应用

    全国计算机二级C语言等级考试视频教程-12-16章

    计算机二级C语言等级考试总16章,43小时,3.3g,视频教程,由于一次只能上传1g,所以分3个资源上传 12-16章 ...第13章 宏昔换 第14章 结构体 第15章 位运算符及其功能 第16章 六组文件函数的应用

    全国计算机二级C语言等级考试视频教程-6-11章

    计算机二级C语言等级考试总16章,43小时,3.3g,视频教程,由于一次只能上传1g,所以分3个资源上传 6-11章 总目录: ...第13章 宏昔换 第14章 结构体 第15章 位运算符及其功能 第16章 六组文件函数的应用

    Linux系统管理技术手册(第二版).高清版.part1

    第13章 路由选择 第14章 网络硬件 第15章 域名系统 第16章 网络文件系统 第17章 共享系统文件 第18章 电子邮件 第19章 网络管理和调试 第20章 安全 第21章 Web主机托管和Internet服务器 第22章 X窗口系统 第23章 ...

    Visual C++程序开发范例宝典 - 第13章

    第13章 Web编程 13.1 上网控制 实例368 定时登录Internet 实例369 根据网络连接控制IE启动 13.2 文件上传与下载 实例370 FTP文件上传程序 实例371 HTTP服务器多线程文件下载 实例372 遍历FTP文件目录 13.3 邮件管理 ...

    PHP中文网线上培训班-PHP编程.zip

    第13章 对象继承与成员访问 第14章 成员重载与实战 第15章 抽象类与接口实战 第16章 面向对象的进阶内容 第17章 设计模式与MVC 第18章 异常处理与文件上传 第19章 php原生实战 第20章 php原生实战1 第21章 php原生...

Global site tag (gtag.js) - Google Analytics