PHP中使用文件域上传文件,需要几个步骤,首先先判断有无文件域,然后判断是否选择了文件,最后判断文件是否上传成功。
需要注意的是 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data
在文件上传时会给服务端以数组的形式返回几个值,如下:
//array(5) {
// ["name"]=>
// string(25) "mmexport1534732827710.jpg"
// ["type"]=>
// string(10) "image/jpeg"
// ["tmp_name"]=>
// string(26) "C:WindowsTempphpD9E.tmp"
// ["error"]=>
// int(0)
// ["size"]=>
// int(145606)
//}
其中''name"为上传文件名,"type"为上传文件类型,"tmp_name"为上传文件后所存放的路径,"error"为上传文件的错误问题,"size"为上传文件的大小。
具体代码如下:
<?php function upload() { if (!(isset($_FILES['avatar']))) { //是否有文件域 $GLOBALS['message'] = '没有上传文件'; return; } $avatar = $_FILES['avatar']; var_dump($avatar); if ($avatar['error']!==UPLOAD_ERR_OK) { //服务端没有接受到上传的文件 $GLOBALS['message'] = '上传失败'; return; } //接收到了文件 //将文件从临时目录移动到网站范围内 $source=$avatar['tmp_name']; //源文件路径 $target='./uploads/' . $avatar['name']; //目标路径 //==>./uploads/mmexport1534732827710.jpg $moved=move_uploaded_file($source, $target); if (!$moved) { $GLOBALS['message'] = '上传失败'; return; } //移动成功===>上传成功 $GLOBALS['message'] = '上传成功'; } if ($_SERVER['REQUEST_METHOD']==='POST') { //接受文件 使用一个 叫做$_FILES 超全局成员 //var_dump($_FILES); upload(); } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>文件域</title> </head> <body> <!-- 表单中有文件域,必须将method设置为post, enctype设置为multipart/form-data --> <!-- enctype 默认是urlencoded 格式 key1=value1&key2=value2 --> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data"> <input type="file" name="avatar"> <button>上传</button> <?php if (isset($message)): ?> <?php echo $message ?> <?php endif ?> </form> </body> </html>