HTML中使用type = 'file'类型的表单可以向服务器上传文件;
上传文件的表单必须在form中定义enctyp = 'multipart/form-data';
HTML代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>FileSubmit Document.</title>
</head>
<body>
<form action="user.php" method="post" enctype="multipart/form-data" name="upvideo">
上传文件:<input type="file" name="video" />
<input type="submit" value="上传"/>
</form>
</form>
</body>
</html>
PHP代码如下:
<?php var_dump($_POST);
var_dump($_FILES); if ($_FILES['video']['error'] > 0) {
echo "Error:" .$_FILES['video']['error']. "</br>";
} else {
print_r($_FILES['video']); if (is_uploaded_file($_FILES['video']['tmp_name'])) {
$upfile = $_FILES['video'];
// 获取数组里面的值
$name = $upfile['name']; // 上传文件的文件名
$type = $upfile['type']; // 上传文件的类型
$size = $upfile['size']; // 上传文件的大小
$tmp_name = $upfile['tmp_name']; //上传文件的临时存放路径
// 移动上传的文件到指定目录
move_uploaded_file($tmp_name, '/Library/WebServer/Documents/book/' . $name);
}
}
注意:
使用print_r打印数据的时候发现第一个数组为空,这表明使用file类型表单提交数据时并不使用$_POST接受数据,而是使用全局变量$_FILES来接收;
· php默认上传文件的大小只有2MB;
例如要上传一个50MB的大文件,php.ini配置如下:
file_uploads = On
upload_tmp_dir = "/user/file"
upload_max_filesize = 50M
post_max_size = 100M
max_excution_time = 600
max_input_time = 600