- PHP教程
- PHP-主页
- PHP - 简介
- PHP-环境设置
- PHP - 语法概述
- PHP - 变量类型
- PHP - 常量
- PHP - 运算符类型
- PHP - 决策
- PHP - 循环类型
- PHP-数组
- PHP-字符串
- PHP - 网络概念
- PHP - 获取和发布
- PHP - 文件包含
- PHP - 文件和 I/O
- PHP - 函数
- PHP-Cookie
- PHP-会话
- PHP - 发送电子邮件
- PHP-文件上传
- PHP - 编码标准
- 高级PHP
- PHP - 预定义变量
- PHP-正则表达式
- PHP - 错误处理
- PHP - 错误调试
- PHP - 日期和时间
- PHP 和 MySQL
- PHP 和 AJAX
- PHP 和 XML
- PHP——面向对象
- PHP - 面向 C 开发人员
- PHP - 适合 PERL 开发人员
- PHP 表单示例
- PHP-表单介绍
- PHP - 验证示例
- PHP - 完整表格
- PHP框架作品
- PHP-框架工程
- PHP - 核心 PHP 与 Frame Works
- PHP 设计模式
- PHP - 设计模式
- PHP 函数参考
- PHP - 内置函数
- PHP 有用资源
- PHP - 问题与解答
- PHP - 有用的资源
- PHP - 讨论
PHP-文件上传
PHP 脚本可以与 HTML 表单一起使用,以允许用户将文件上传到服务器。最初,文件被上传到临时目录,然后通过 PHP 脚本重新定位到目标位置。
phpinfo.php页面中的信息将用于文件上传的临时目录描述为upload_tmp_dir,可上传的最大允许文件大小描述为upload_max_filesize。这些参数设置到 PHP 配置文件php.ini中
上传文件的过程遵循以下步骤 -
用户打开包含 HTML 表单的页面,其中包含文本文件、浏览按钮和提交按钮。
用户单击浏览按钮并从本地PC选择要上传的文件。
所选文件的完整路径显示在文本字段中,然后用户单击提交按钮。
所选文件将发送到服务器上的临时目录。
在表单的操作属性中指定为表单处理程序的 PHP 脚本检查文件是否已到达,然后将文件复制到预期目录中。
PHP 脚本向用户确认成功。
与往常一样,写入文件时,临时位置和最终位置都需要设置允许文件写入的权限。如果其中一个设置为只读,则进程将失败。
上传的文件可以是文本文件或图像文件或任何文档。
创建上传表单
下面的 HTM 代码创建一个上传者表单。该表单的 method 属性设置为post,enctype 属性设置为multipart/form-data
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size =$_FILES['image']['size']; $file_tmp =$_FILES['image']['tmp_name']; $file_type=$_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $extensions= array("jpeg","jpg","png"); if(in_array($file_ext,$extensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file_size > 2097152){ $errors[]='File size must be excately 2 MB'; } if(empty($errors)==true){ move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <html> <body> <form action="" method="POST" enctype="multipart/form-data"> <input type="file" name="image" /> <input type="submit"/> </form> </body> </html>
它将产生以下结果 -
创建上传脚本
有一个名为$_FILES的全局 PHP 变量。该变量是一个关联的二维数组,保存与上传文件相关的所有信息。因此,如果上传表单中分配给输入名称属性的值为file,那么 PHP 将创建以下五个变量 -
$_FILES['file']['tmp_name'] - Web 服务器上临时目录中的上传文件。
$_FILES['file']['name'] - 上传文件的实际名称。
$_FILES['file']['size'] - 上传文件的大小(以字节为单位)。
$_FILES['file']['type'] - 上传文件的 MIME 类型。
$_FILES['file']['error'] - 与此文件上传相关的错误代码。
例子
下面的示例应该允许上传图像并返回结果作为上传的文件信息。
<?php if(isset($_FILES['image'])){ $errors= array(); $file_name = $_FILES['image']['name']; $file_size = $_FILES['image']['size']; $file_tmp = $_FILES['image']['tmp_name']; $file_type = $_FILES['image']['type']; $file_ext=strtolower(end(explode('.',$_FILES['image']['name']))); $extensions= array("jpeg","jpg","png"); if(in_array($file_ext,$extensions)=== false){ $errors[]="extension not allowed, please choose a JPEG or PNG file."; } if($file_size > 2097152) { $errors[]='File size must be excately 2 MB'; } if(empty($errors)==true) { move_uploaded_file($file_tmp,"images/".$file_name); echo "Success"; }else{ print_r($errors); } } ?> <html> <body> <form action = "" method = "POST" enctype = "multipart/form-data"> <input type = "file" name = "image" /> <input type = "submit"/> <ul> <li>Sent file: <?php echo $_FILES['image']['name']; ?> <li>File size: <?php echo $_FILES['image']['size']; ?> <li>File type: <?php echo $_FILES['image']['type'] ?> </ul> </form> </body> </html>
它将产生以下结果 -