要想通过PHP成功地管理上传文件,需要通过以下三方面信息:
1、设置PHP配置文件中的指令:用于精细地调节PHP的文件上传功能
2、$_FILES多维数组:用于存储各种与上传文件有关的信息,其他数据还使用$_POST去接收
$_FILES["myfile"]["name"]中的值是:客户端文件系统的文件的名称
$_FILES["myfile"]["type"]中的值是:客户端传递的文件的类型
$_FILES["myfile"]["size"]中的值是:文件的字节的大小
$_FILES["myfile"]["tmp_name"]中的值是:文件被上传后在服务器存储的临时全路径
$_FILES["myfile"]["error"]中的值是:文件上传的错误代码(php 4.2以后增加的功能)
伴随文件上传时产生的错误信息代码具体如下:
值为0(UPLOAD_ERR_OK):表示没有发生任何错误
值为1(UPLOAD_ERR_INI_SIZE):表示上传文件的大小超出了约定值。文件大小的最大值是在PHP配置文件中指定的,该指令是:upload_max_filesize
值为2(UPLOAD_ERR_FORM_SIZE):表示上传文件大小超出了HTML表单隐藏域属性的MAX_FILE_SIZE元素所指定的最大值
值为3(UPLOAD_ERR_PARTIAL):表示文件只被部分上传
值为4(UPLOAD_ERR_NO_FILE):表示没有上传任何文件
值为6(UPLOAD_ERR_NO_TMP_DIR):表示找不到临时文件夹(PHP4.3.10和PHP5.0.3)
值为7(UPLOAD_ERR_CANT_WRITE):表示文件写入失败(PHP 5.1.0)
3、PHP的文件上传处理函数:用于上传文件的后续处理
只要把临时目录下的上传的文件,复制到指定目录下指定的名字就可以完成上传
PHP提供了专门用于文件上传所使用的is_uploaded_file()和move_uploaded_file()函数
【is_uploaded_file()】
is_uploaded_file()判断文件是否是通过 HTTP POST 上传的
bool is_uploaded_file ( string $filename )
如果filename所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户无法欺骗脚本去访问本不能访问的文件
[注意]为了能使is_uploaded_file() 函数正常工作,必须使用$_FILES['userfile']['tmp_name'],而在从客户端上传的文件名$_FILES['userfile']['name']不能正常运作
【move_uploaded_file()】
move_uploaded_file()方法用于将上传的文件移动到新位置
bool move_uploaded_file ( string $filename , string $destination )
本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件
该函数成功时返回TRUE;如果filename不是合法的上传文件,不会出现任何操作,move_uploaded_file()将返回 FALSE;如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file()将返回 FALSE。此外还会发出一条警告
<?php header("Content-Type:text/plain;charset=utf-8"); //判断错误 if($_FILES['file1']['error'] > 0) { switch($_FILES['file1']['error']) { case 1: case 2: echo "上传文件太大"; break; case 3: echo "文件只被部分上传"; break; case 4: echo "没有上传任何文件"; break; default: echo "末知错误"; } exit; } //判断类型 $arr = explode(".", basename($_FILES['file1']['name'])); $hz = array_pop($arr); $allowtype =array("gif", "png", "jpg", "jpeg"); if(!in_array($hz, $allowtype)) { echo "上传的类型不合法"; exit; } //判断大小 $maxsize= 1000000; if($_FILES['file1']['size'] > $maxsize) { echo "上传的文件超过了{$maxsize}字节!"; exit; } //随机文件名 $tmp_name = $_FILES['file1']['tmp_name']; $src_name = "./uploads/".date("YmdHis").rand(100, 999).".".$hz; if(move_uploaded_file($tmp_name, "$src_name")){ echo '上传成功'; }else{ echo '上传失败'; } ?>
原文链接:https://www.qiquanji.com/post/7944.html
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
微信扫码关注
更新实时通知