PHP处理上传文件
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