这边只给出一个简单文件上传的demo,文件如果过大可以考虑使用分片上传。
HTML文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>demo</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" id="file" />
<br />
<input type="submit" name="submit" value="upload" />
</form>
</body>
</html>
PHP后台
<?php
//重点说明 因为上传的是视频文件 所以文件大小会超出服务器及php的默认配置 需要手动修改配置
//php配置文件php.ini
//file_uploads on 是否允许通过HTTP上传文件的开关。默认为ON即是开
// upload_tmp_dir – 文件上传至服务器上存储临时文件的地方,如果没指定就会用系统默认的临时文件夹
// upload_max_filesize 8m 望文生意,即允许上传文件大小的最大值。默认为2M
// post_max_size 8m 指通过表单POST给PHP的所能接收的最大值,包括表单里的所有值。默认为8M
//如果是nginx服务器还需要修改nginx的配置文件 下面是我的nginx修改后的配置 加入了client_max_body_size 100m;
// server {
// listen 83;
// server_name localhost;
// root /usr/share/nginx/html;
// index index.php;
// client_max_body_size 100m;
// access_log /var/log/nginx/html-access.log;
// error_log /var/log/nginx/html-error.log;
// location / {
// try_files $uri $uri/ /index.php?$args =404;
// #try_files $uri$args $uri$args/ index.php;
// }
// location ~ .*\.(php|php7.0)?$ {
// #fastcgi_pass 127.0.0.1:9000;
// fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
// include fastcgi_params;
// }
// location ~ /\.(ht|svn|git) {
// deny all;
// }
// }
//修改完毕后要求重启php,以及服务器
// sudo service php7.0-fpm restart (ubuntu下)
// sudo service nginx restart(ubuntu下)
//当前脚本文件所在目录
define('ROOT_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
//上传后的文件数据对象 文件信息都保存在这个数组中
$file = $_FILES["file"];
//格式及大小验证 只接收mp4, rmvb格式 文件大小限制100M 如需添加或更改则在此修改
if (($file["type"] == "video/mp4" || $file["type"] == "video/rmvb") && $file["size"] < 100 * 1024 * 1024) {
//上传是否成功判断
if ($file["error"] > 0) {
echo "错误信息: " . $file["error"] . "<br />";
} else {
//文件是否已经存在
if (file_exists("upload/" . $file["name"])) {
echo $file["name"] . " 已存在. ";
} else {
//是否是通过表单提交的文件
if (is_uploaded_file($file['tmp_name'])) {
//保存路径拼接 要求upload目录权限为777
$save_path = ROOT_DIR . 'upload/' . basename($file['name']);
//使用函数将上传的临时文件保存到自定义的目录
if (move_uploaded_file($file['tmp_name'], $save_path)) {
echo "上传成功, 文件保存在: " . $save_path;
} else {
echo '文件上传失败';
}
} else {
echo '文件来源错误';
}
}
}
} else {
echo "无效文件,只支持mp4,rmvb格式的100M文件";
}
?>