博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php课程 10-35 php实现文件上传的注意事项是什么
阅读量:4701 次
发布时间:2019-06-09

本文共 5227 字,大约阅读时间需要 17 分钟。

php课程 10-35 php实现文件上传的注意事项是什么

一、总结

一句话总结:记得限制大小和类型,还有就是用move_uploaded_file($sfile,$dfile);函数把上传到php临时目录的文件拷出来,存在想存的位置,还有就是用日期文件夹,时间轴+随机数的方式解决文件重名和乱码的问题。

 

1、递归删除文件和核心操作是什么?

判断是目录还是文件,如果是目录就接着递归,是文件就删除,这应该算作是最简单的递归了

这里递归的结束条件是什么:文件(删除文件)

2 $dir='imgs'; 3  4 function delDir($dir){ 5 $files=scandir($dir); 6 7 foreach($files as $key=>$val){ 8 if($key>1){ 9 $file=$dir.'/'.$val; 10 11 if(is_dir($file)){ 12 delDir($file); 13 }else{ 14 unlink($file); 15 } 16 } 17 } 18 19 rmdir($dir); 20 } 21 22 delDir($dir);

 

2、php可以做什么?

目录操作,文件操作,图片操作等等等等,office系列应该也是行的

 

3、目录只能创建不能复制,那么如何实现里面有文件的目录的复制?

递归,目录创建,文件复制

2 function copyDir($dir1,$dir2){ 3 mkdir($dir2); 4 5 $files=scandir($dir1); 6 7 foreach($files as $key=>$val){ 8 if($key>1){ 9 $file1=$dir1.'/'.$val; 10 $file2=$dir2.'/'.$val; 11 12 if(is_dir($file1)){ 13 copyDir($file1,$file2); 14 }else{ 15 copy($file1,$file2); 16 } 17 } 18 } 19 } 20 21 copyDir('img','img2');

 

 

4、php文件上传函数用什么?

move_uploaded_file($sfile,$dfile)会检查$sfile是不是上传上来的文件,否则它不干活

其实这个函数的作用和copy(复制文件)的作用很像

35         move_uploaded_file($sfile,$dfile);

 

5、原生php图片上传怎么操作?

2 $sfile=$_FILES['img']['tmp_name']; 3 $uploaddir='uploads'; 4 $filesize=$_FILES['img']['size']; 5 6 //创建上传日期目录 7 $year=date('Y'); 8 $month=date('m'); 9 $day=date('d'); 10 $datedir=$uploaddir.'/'.$year.'-'.$month.'-'.$day; 11 if(!file_exists($datedir)){ 12 mkdir($datedir); 13 } 14 15 // 获取文件后缀 16 $farr=explode('.',$_FILES['img']['name']); 17 $fext=array_pop($farr); 18 19 //加工文件名 20 $frand=time().mt_rand(); 21 22 //最终上传路径和文件名 23 $dfile=$datedir.'/'.$frand.'.'.$fext; 24 25 26 //限制文件上传大小(1M) 27 $sizes=1*1024*1024; 28 29 //限制文件上传类型 30 $allows=array('jpg','png','gif'); 31 32 //文件上传移动操作 33 if(in_array($fext,$allows)){ 34 if($filesize<=$sizes){ 35 move_uploaded_file($sfile,$dfile); 36 }else{ 37 echo ""; 38 } 39 }else{ 40 echo ""; 41 }

 

6、上传文件的注意事项是什么?

必须在form中表明我们上传的是文件,不然form表单传不了这么大的东西,或者说这种类型的东西

14     

 

7、怎么解决图片上传是的文件同名覆盖和中文乱码的问题?

先创建上传日期目录

然后是时间戳加随机数 time().mt_rand();
但是这样不行,大家都是这样想的,容易被黑,把用户上传的图片都搞走,所以可以在加一点自己特色的字串即可

 

8、文件上传中需要限制哪些操作?

类别和大小

 

9、如何获取用户上传的文件的各种信息?

用$_FILES,里面有大小,类型,上传位置等一系列的信息

2 $sfile=$_FILES['img']['tmp_name']; 3 $uploaddir='uploads'; 4 $filesize=$_FILES['img']['size'];

 

10、如何判断一个值在不在数组中(如何限制图片类型)?

in_array()

29 //限制文件上传类型30 $allows=array('jpg','png','gif'); 31 32 //文件上传移动操作 33 if(in_array($fext,$allows)){

 

 

 

 

 

二、php实现文件上传的注意事项是什么

1、相关知识

目录操作:

1.遍历目录
opendir();
readdir();
closedir();
scandir();
2.创建空目录
mkdir();
3.删除空目录
rmdir();
4.删除完整目录(delDir)
scandir();
function delDir($dir){
    $files=scandir($dir);
    foreach($files as $key=>$val){
        if($key>1){
            $file=$dir.'/'.$val;
            if(is_dir($file)){
                delDir($file);
            }else{
                unlink($file);
            }
        }
    }
    rmdir($dir);
}
5.复制完整目录(cpDir)
function copyDir($dir1,$dir2){
    mkdir($dir2);
    $files=scandir($dir1);
    foreach($files as $key=>$val){
        if($key>1){
            $file1=$dir1.'/'.$val;
            $file2=$dir2.'/'.$val;
            if(is_dir($file1)){
                copyDir($file1,$file2);
            }else{
                copy($file1,$file2);
            }
        }
    }
}
6.移动完整目录(mvDir)
copyDir();
delDir();
文件上传:
move_uploaded_file($sfile,$dfile);
文件上传错误码:
0 #正确
1 #上传大小超过了input[type=file]的文件上传框最大大小
4 #没有上传任何文件
post限制:
post_max_size = 3072M
upload限制:
upload_max_filesize = 3072M

 

 

2、代码

完整的文件上传实例

1 
alert('文件大小超过1M!')";38 }39 }else{40 echo "";41 }42 ?>

 

文件上传表单

1  2  3  4     
5 Document 6 11 12 13

文件上传:

14
15

请选择文件:

16

17 18

19 20

21 22

23
24 25

 

 

copyDir复制完整目录

1 
$val){ 8 if($key>1){ 9 $file1=$dir1.'/'.$val;10 $file2=$dir2.'/'.$val;11 12 if(is_dir($file1)){13 copyDir($file1,$file2);14 }else{15 copy($file1,$file2);16 }17 }18 }19 }20 21 copyDir('img','img2');22 ?>

 

moveDir移动目录

1 
$val){ 6 if($key>1){ 7 $file=$dir.'/'.$val; 8 9 if(is_dir($file)){10 delDir($file);11 }else{12 unlink($file);13 }14 }15 }16 rmdir($dir);17 }18 19 // 复制目录20 function copyDir($dir1,$dir2){21 mkdir($dir2);22 $files=scandir($dir1);23 foreach($files as $key=>$val){24 if($key>1){25 $file1=$dir1.'/'.$val;26 $file2=$dir2.'/'.$val;27 28 if(is_dir($file1)){29 copyDir($file1,$file2);30 }else{31 copy($file1,$file2);32 }33 }34 }35 }36 37 //移动目录38 function moveDir($dir1,$dir2){39 copyDir($dir1,$dir2);40 delDir($dir1);41 }42 43 $dir1='img';44 moveDir($dir1,'img3');45 ?>

 

clearDir清空目录

1 
$val){ 8 if($key>1){ 9 $file=$dir.'/'.$val;10 11 if(is_dir($file)){12 clearDir($file);13 rmdir($file);14 }else{15 unlink($file);16 }17 }18 }19 }20 21 clearDir($dir);22 ?>

 

delDir完整删除目录

1 
$val){ 8 if($key>1){ 9 $file=$dir.'/'.$val;10 11 if(is_dir($file)){12 delDir($file);13 }else{14 unlink($file);15 }16 }17 }18 19 rmdir($dir);20 }21 22 delDir($dir);23 ?>

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/9311055.html

你可能感兴趣的文章
几个多项式的题
查看>>
大爆炸(Big Bang)
查看>>
iOS 按frame截取部分图像
查看>>
iOS 音频开发之CoreAudio
查看>>
C#读写三菱PLC和西门子PLC数据 使用TCP/IP 协议
查看>>
vue中moudles的作用及使用方法
查看>>
alpha版、beta版、rc版的意思
查看>>
负载均衡的常用算法
查看>>
JS版本 Bootstrap Modal
查看>>
Perl Coro初体检
查看>>
题目41:对称平方数
查看>>
算法分析:快速选择
查看>>
例题2-2 在屏幕上显示两个短句。
查看>>
梦断代码阅读笔记02
查看>>
Sunscreen [POJ3614] [贪心]
查看>>
网络 [HNOI2016]
查看>>
Java知多少(65)线程的挂起、恢复和终止
查看>>
数学学习笔记-函数
查看>>
一个博士生学位论文致谢部分
查看>>
PP学习笔记-业务基础
查看>>