<meta charset='utf-8'> <?php //r为只读 无法创建文件 r+()可以读和写 //打开成功会返回一个文件资源,水太深,老师说先不说 //$fn = fopen('test.txt','r') or die('打开失败,没有找到test.txt文件'); //$fn2 = fopen('test.txt','w') or die('创建test.txt失败'); //$fn3 = fopen('test3.txt','a') or die('创建test.txt失败'); //用fopen()可以打开外部的链接 $fn3 = fopen('http://ent.163.com/18/0423/21/DG3U1EG400038FO9.html','r') or die('创建test.txt失败'); //while($s=fgets($fn3)){//fgets()函数从远程或者本地文件指针中读取一行出来 // print $s; //} //fgetss 去掉获取页面的标签 //while($s=fgetss($fn3)){//fgets()函数从远程或者本地文件指针中读取一行出来 // print $s; //} //file_get_contents('文件');读取文件到字符串 //$con = file_get_contents('test.txt'); //echo $con.'<br>'; //echo strlen($con).'<br>'; //echo mb_strlen($con,'utf8'); $arr = file('test3.txt');//file()这个函数很强大,可以读古诗 //echo '<pre>'; // print_r($arr); //foreach($arr as $key=>$value){ // echo $key.':'.$value; //} //shuffle($arr);//shuffle打乱的函数 //print_r($arr); //if(shuffle($arr)){ //// echo $arr[0]; // echo current($arr);//current返回一个数组中的值 //} //array_rand返回的是键名 $keys = array_rand($arr,3);//随机数3个 foreach($keys as $value){//遍历出来 print $arr[$value].'<br>'; }
文件的操作.读写,随机选取
<meta charset="UTF-8"/> <?php /* * 目录的遍历操作: * 传统过程函数 opendir();readdir();colsedir();分别是打开读取关闭 * 目录扫描器scandir(); */ //$open = opendir('../0419') or die('打开失败'); //while(false != ($file = readdir($open))){ // if($file != '.' && $file !='..'){ // print $file.'<br>'; // } //} //colsedir($open); $sctrr = scandir('../0419/'); //echo '<pre>'; //print_r($sctrr); foreach($sctrr as $value){ if($value != '.' && $value !='..'){ echo $value.'<br>'; } }
目录的遍历.用到很直观的函数,opendir(),readdir(),colsedir();和目录扫描器scandir();
<meta charset="UTF-8"/> <?php //__FILE__系统常量 echo __FILE__."<br>"; //basename()文件名 echo basename(__FILE__)."<br>"; //获取目录名,不包含文件本身 echo dirname(__FILE__)."<br>"; //3.pathinfo();将目录名,文件名,扩展或者解析分成数组 $pathinfo = pathinfo(__FILE__); echo "目录名".$pathinfo['dirname'].'<br>'; echo "文件名".$pathinfo['basename'].'<br>'; echo "文件名".$pathinfo['extension'].'<br>'; //php中没有提供将这三个部分组成一个完整文件名的函数 //因为windows与unix上的目录分隔符不同 //windows是正斜线:/ , unix/linux上的是反斜线\ //所以系统提供一个常量:DIRECTORY_SEPARATOR,可以根据系统自动确定路径分隔符类型 $path = dirname(__FILE__).DIRECTORY_SEPARATOR.basename(__FILE__); echo $path,'<br>';
获取文件的地址,文件名等等 函数pathinfo(),可以将文件等解析成数组.
<meta charset="UTF-8"/> <?php //文件删除 //unlink('new_file.css') or die('无法删除new_file.css'); //复制内容1替换到内容2里 0419为父级,..为爷爷级 //copy('test3.txt','../0419/maxim.txt') or die('复制失败'); //rename改名 二个参数在同一目录下 //rename('ceshi.txt','test.txt') or die('修改失败');//第一个为要改的原文件,第二个参数是修改后的名字 //rename() //移动文件,两个参数不在一个目录下 //rename('test3.txt','../0419/maxim.txt') or die('移动失败'); //创建目录 //mkdir('mulu2') or die('创建失败'); //移动到mulu的空文件夹 //rename('test.txt','mulu/test.txt') or die('移动失败'); //清除目录 //rmdir('mulu2') or die('删除文件失败');
文件的操作比较语义化 :unlink:删除 2.rename:该文件名或移动 3.copy:复制 4. mkdir创建目录 5.rmdir:删除目录
<meta charset="UTF-8"/> <!-- //文件上传必须是 POST方式method //允许上传的类型必须是:multipart/form-data //action可以是空,可以是当前文件名,但是最安全的是 --> <form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" method="POST" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" id="" value="542488" /> <fieldset> <legend align="center">文件上传</legend> <p><strong>选择文件:</strong><input type="file" name="upload"/></p> </fieldset> <p align="center"><input type="submit" name="submit" value="上传"/></p> </form> <!-- $_FILES['file']['name']:原始文件名 $_FILES['file']['type']:文件类型 $_FILES['file']['size']:文件大小 $_FILES['file']['tmp_name']:临时文件夹 $_FILES['file']['error']:上传错误代码 --> <?php if($_SERVER['REQUEST_METHOD'] == 'POST'){//检查是否用post提交的 if(isset($_FILES['upload']) ){ //设置允许上传文件的类型 $allow = ['image/jpg','image/jpep','image/png']; //判断用户是否上传了正确的图片 if(in_array($_FILES['upload']['type'],$allow)){ //将文件添加到临时文件 if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}")) { echo "<script>alert('上传成功')</script>"; }else{ echo "<script>alert('上传失败')</script>"; } }else{ echo '文件类型错误'; } } //对上传错误进行处理 if ($_FILES['upload']['error'] > 0 ) { echo '<p>错误原因是:<strong>'; switch ($_FILES['upload']['error']) { case 1: echo '文件超过了php.ini配置中设置的大小'; break; case 2: echo '文件超过了表单中常量设置的大小'; break; case 3: echo '仅有部分文件被上传'; break; case 4: echo '没有文件被上传'; break; case 6: echo '没有可用的临时文件夹'; break; case 7: echo '磁盘已满,写入失败'; break; case 8: echo '上传意外中止'; break; default: echo '系统未知错误'; break; } echo '</strong></p>'; //保险起见,最好把创建的临时文件删除,当然系统也会在结束会话时自动清空 if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) { unlink($_FILES['upload']['tmp_name']); } } }else{ echo '1'; } ?>
上面为未ajax上传的代码
实例
<meta charset="UTF-8"/> <!-- //文件上传必须是 POST方式method //允许上传的类型必须是:multipart/form-data //action可以是空,可以是当前文件名,但是最安全的是 --> <form method="POST" enctype="multipart/form-data"> <!--隐藏的input--> <input type="hidden" name="MAX_FILE_SIZE" id="" value="542488" /> <fieldset> <legend align="center">文件上传</legend> <p><strong>选择文件:</strong><input type="file" name="upload"/></p> </fieldset> <p align="center"><input type="submit" name="submit" value="上传"/></p> <span></span> </form> <script type="text/javascript" src="jquery-3.2.1.min.js" ></script> <script> //form提交链接上 window.onload = function(){ var frm = document.getElementsByTagName('form')[0]; frm.onsubmit = function(evt){ //收集文件 var frmevent = new FormData(frm); //ajax开始做 var req = new XMLHttpRequest(); req.onreadystatechange = function(){ if(req.readyState == 4){ alert(req.responseText);//打印信息 $("span").text(req.responseText) } } req.open('POST','file.php');//传输格式,要传的服务器 req.send(frmevent);//发送 evt.preventDefault();//阻止跳转 } } </script>
运行实例 »
点击 "运行实例" 按钮查看在线实例
实例
<?php //$_FILES['file']['name']:原始文件名 //$_FILES['file']['type']:文件类型 //$_FILES['file']['size']:文件大小 //$_FILES['file']['tmp_name']:临时文件夹 //$_FILES['file']['error']:上传错误代码 if($_SERVER['REQUEST_METHOD'] == 'POST'){//检查是否用post提交的 if(isset($_FILES['upload']) ){ //设置允许上传文件的类型 $allow = ['image/jpg','image/jpep','image/png']; //判断用户是否上传了正确的图片 if(in_array($_FILES['upload']['type'],$allow)){ //将文件添加到临时文件 if(move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}")) { echo "上传成功"; }else{ echo "上传失败"; } }else{ echo '文件类型错误'; } } //对上传错误进行处理 if ($_FILES['upload']['error'] > 0 ) { echo '<p>错误原因是:<strong>'; switch ($_FILES['upload']['error']) { case 1: echo '文件超过了php.ini配置中设置的大小'; break; case 2: echo '文件超过了表单中常量设置的大小'; break; case 3: echo '仅有部分文件被上传'; break; case 4: echo '没有文件被上传'; break; case 6: echo '没有可用的临时文件夹'; break; case 7: echo '磁盘已满,写入失败'; break; case 8: echo '上传意外中止'; break; default: echo '系统未知错误'; break; } echo '</strong></p>'; //保险起见,最好把创建的临时文件删除,当然系统也会在结束会话时自动清空 if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) { unlink($_FILES['upload']['tmp_name']); } } }else{ echo '1'; } ?>
运行实例 »
点击 "运行实例" 按钮查看在线实例