<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>上传文件</title>
</head>
<body>
<!--enctype规定在提交表单时要使用哪种内容类型,在表单提交需要二进制数据时,设置成"multipart/form-data"-->
<form action="upload.php" method="get" enctype="multipart/form-data">
<input type="file" name="headImg" id="headImg" value="上传头像"/>
<input type="submit" value="提交上传" id="btn"/>
</form>
</body>
<script type="text/javascript">
var btn = document.getElementById("btn");
var headImg = document.getElementById("headImg");
btn.onclick = function(){
//可以验证文件的类型和大小
console.log(headImg.files[0]);
}
</script>
</html>
<?php
//$_FILES 全局数组, 可以获取上传文件的信息
print_r($_FILES);
define("fileName","upload");
/*
* 获取文件名
* $name = $_FILES[headImg][name];
*/
//获取文件名
$name = $_FILES["headImg"]["name"];
// echo $name;
// echo "<hr>";
//获取文件类型
$type = $_FILES["headImg"]["type"];
//获取文件大小
$size = $_FILES["headImg"]["size"];
//获取在服务器上的文件临时存放路径
$temp = $_FILES["headImg"]["tmp_name"];
//与服务器有关的信息
echo "<hr>";
print_r($_SERVER);
//获取服务器名字,服务器地址
$rootPath = $_SERVER["SERVER_NAME"];
//获取绝对路径
$basePath = $_SERVER["DOCUMENT_ROOT"];
//定义要存储目的地文件地址
function imagePath(){
global $basePath;//本地的路径
global $name;//文件的名字
// $path = $basePath."/PHP/PHP03/upload/".$name;
$path = $basePath."/PHP/PHP03/".fileName."/".$name;
return $path;
}
//设定服务器的文件网址
function fileURL(){
global $rootPath;
global $name;
$path = "http://".$rootPath."/PHP/PHP03/".fileName."/".$name;
return $path;
}
//设定文件夹的路径
function filePath(){
global $basePath;
$path = $basePath."/PHP/PHP03/".fileName."/";
return $path;
}
//限制上传文件的大小和格式
// $type = "image/gif";
// $size = 1000;
if(!(($type == "image/gif" || $type == "image/jpeg" || $type == "image/png") && $size < 1024000)){
echo "你上传的图片格式或者大小不符合要求,请重新上传";
return;//提前终止代码执行
}
//判断是否接收成功
if($_FILES["headImg"]["error"] > 0){
echo "Error:".$_FILES["headImg"]["error"];
}else{//文件上传成功,服务器已经接收到
$desPath = imagePath();//要存储的目的文件地址
$rootPath = fileURL();//获取服务器文件的网址
$filePath = filePath();//要存上传的文件的文件夹的路径
echo "目的文件:".$desPath."<hr>";
echo "服务器根路径:".$rootPath."<hr>";
echo "文件夹路径:".$filePath."<hr>";
if(!is_dir($filePath)){//判断文件夹是否存在,不存在的话创建
echo "文件夹不存在";
mkdir($filePath);
chmod($filePath,0755);//修改权限
/*
* 1-执行
* 2-写
* 4-读
* 777 - 分别指: 用户 组用户 everyone
* 1+2+4=7 读与写的权限
* 1+2=3 只读
* 1+4=5 只写
*/
}else{
echo "<hr>";
echo "文件夹已经存在";
}
//$temp 文件临时路径
$res = move_uploaded_file($temp,$desPath);
var_dump($res);
if($res){
echo "<img src={$rootPath} />";
}
}
?>