多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
文件上传可以是:图片 视频 文档 # 流程 ## $_FILES 获取文件信息的全部变量 ``` $_FILES['提交过来的名称'] ``` 代码案例: HTML文件 ~~~ <form action='56.php' method='post' enctype="multipart/form-data"> <input type="file" name="img"/> <input type="submit" value="上传" /> </form> //发送上传的文件 ~~~ PHP文件 ~~~ $file=$_FILES['img']; //接受上传的文件 print_r($file); ~~~ # 上传文件的步骤 ``` 1.获取上次图片的信息 2.验证上传图片的格式 3.验证上传图片的大小 4.创建上传目录(如果没有) 5.上传文件到指定目录下 ``` ## 整个流程代码案例可根据需求改动变量名称: ~~~ <?php $file=$_FILES['img']; //验证文件扩展名 if($file['error']!=0) { exit('图片有问题禁止上传'); } $geshi=pathinfo($file['name'],PATHINFO_EXTENSION); $b=['jpg','png','gif']; //文件格式 if(!in_array($geshi,$b)) { exit('非图片格式禁止上传'); } //验证图片大小 $da=2097152; if($file['size']>$da) { exit('图片不能大于2M'); } //判断是否有目录,如果没有创建 $dir='uploads'; //给定目录 $sub_dir=$dir.DIRECTORY_SEPARATOR.date('Y-m-d'); //创建以时间命名的子目录 DIRECTORY_SEPARATOR 判断输目录付号因为win与linx不一样,所以要用这个 if(!is_dir($dir)){ //如果没有upleads这个目录创建出来 mkdir($dir); mkdir($sub_dir); //创建目录 }elseif(!is_dir($sub_dir)){ mkdir($sub_dir); //创建子目录 } //移动文件到指定目录 $img_name=date('Ymdllis').rand(100,9999).'.'.$geshi; //生成随机名字的图片防止重名的 move_uploaded_file($file['tmp_name'],$sub_dir.DIRECTORY_SEPARATOR.$img_name); ~~~ <br/> <br/> <br/> <br/> <br/> # 解决文件上传过大的几种方案 ``` 修改php.ini 修改 upload_max_filesize=M //等于多少最大可以传多少 修改post_max_size=M //等于多少最大可以传多少 这2个最好同时改 ``` ## nginx报错误 ``` 修改nginx.conf client_max_body_size 多少m; //等于多少nginx最大可以传多少 413Request Entity Too large 解决方法 ```