<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ### 文件編程 ?文件編程的必要性 ?在網站開發中,我們要使用到文件的上傳和下載,就是經典的文件編程的使用 ?文件的基本概念 文件就是保存數據(二進制素具,文本數據),在程序員看來,文件就是數據的來源。 ?文件流 在對文件進行操作的過程中,我們以流的概念來操作 ### ![](https://box.kancloud.cn/2016-06-03_5750fd9103679.jpg) 從該圖中我們可以看出,如果你的數據是從程序(內存)向文件(磁盤)流動,則我們成為輸出流,反之輸入流。 ?文件-操作的方式 本地操作和遠程操作(通過網絡) ?常用的文件操作函數 ?獲取文件信息函數 ~~~ <?php //文件的基本信息 //1、fopen 打開文件,參數 URL及 打開方式MOde $file_path = "/var/myphp/file/file.txt"; //該函數返回一個指向文件的指針 //chmod($file_path, 777); $fp = fopen($file_path, "r+"); if($fp){ //fstat 獲得文件的信息 $file_info = fstat($fp); echo "<pre>"; print_r($file_info); echo "</pre>"; echo "文件大小".$file_info['size']; } else{ echo "fopen file error!</br>"; } //關閉文件!!必須關閉 fclose($fp); //**獲取文件信息第二種方式 echo "<br/>".filesize($file_path); echo "<br/>".filemtime($file_path); echo "<br/>".filectime($file_path); echo "<br/>".fileatime($file_path); ?> ~~~ ?讀文件獲得文件內容 ### ~~~ <?php /** * * @author jsh * @version */ $file_path = "/var/myphp/file/file.txt"; //該函數返回一個指向文件的指針 /************一種讀取方式************* if(file_exists($file_path)){ if($fp = fopen($file_path,"r+")){ $con = fread($fp, filesize($file_path)); echo "文件的內容是:</br>"; //注意:在默認情況下,我們得到的內容輸出到網頁后,是沒有換行的 //不認\r\n 需要進行下面的替換 $con1 = str_replace("\n", "</br>", $con); echo $con1; }else{ echo "file open error!"; } }else{ echo "file is not exist!"; } fclose($fp); */ /*************第二種讀取方式******** $con = file_get_contents($file_path); $con1 = str_replace("\n", "</br>", $con); echo $con1; */ /*************第三種讀取方式******/ if(file_exists($file_path)){ if($fp = fopen($file_path,"r+")){ $buffer= 1024; //一邊讀,一邊判斷是都到文件的末尾 while(!feof($fp)){ $con = fread($fp, $buffer); echo "文件的內容是1111:</br>"; //注意:在默認情況下,我們得到的內容輸出到網頁后,是沒有換行的 //不認\r\n 需要進行下面的替換 $con1 = str_replace("\n", "</br>", $con); echo $con1; } }else{ echo "file open error!"; } }else{ echo "file is not exist!"; } fclose($fp); //文件內容 $arr = parse_ini_file($file_path); echo "<pre>"; print_r($arr); echo "</pre>"; ~~~ ?寫文件 ? ? ?? ~~~ <?php //如何寫文件 $file_path = "/var/myphp/file/file.txt"; /*******傳統的方法********** if(file_exists($file_path)){ //如果是追加內容,使用a+ //如果是全新的寫到文件,則使用w+,清空原文件再寫入 if($fp = fopen($file_path,"a+")){ $buf="asd123123\n"; fwrite($fp, $buf); }else{ echo "file open error!"; } }else{ echo "file is not exist!"; } fclose($fp); */ /*********另外方法********/ $con = "woaini\n"; //默認情況,即不加第三個參數,則是w+方式 file_put_contents($file_path, $con,FILE_APPEND); echo "write Ok!"; //注意,此函數在底層調用fopen fwrite,調用這個函數一般不使用循環寫 ~~~ ?拷貝一個文件 ### ~~~ <?php //拷貝一個文件 //copy函數 /*******注意******* * 默認情況下路徑是不能帶漢字的,如果使用漢字 * 需要只用iconv("utf-8","gb2312","date");轉換下 */ $file_path="file.txt"; $new_file="1.txt"; if(!copy($file_path, $new_file)){ echo "copy error!"; }else{ echo "copy OK!"; } ~~~ ?文件下載 ? ? ? http://blog.csdn.net/sjin_1314/article/details/8981745 ?文件創建,刪除,文件的創建,刪除 ~~~ <?php //文件及文件夾的創建和刪除 /******創建文件夾****** $dir_name="/var/jsh1"; if(!is_dir($dir_name)){ if(mkdir($dir_name)){ echo "創建文件成功!</br>"; }else{ echo "創建失敗!</br>"; } }else{ echo "文件夾存在!</br>"; } */ /*****創建多級目錄***/ $dir_name="/var/jsh1/aaa/bbb/ccc"; if(!is_dir($dir_name)){ if(mkdir($dir_name,0777,true)){ echo "創建文件成功!</br>"; }else{ echo "創建失敗!</br>"; } }else{ echo "文件夾存在!</br>"; } /*****刪除文件夾****/ //如果文件夾下有文件,或者目錄,均不能刪除 if(rmdir("/var/jsh1/aaa/bbb/ccc")){ echo "刪除文件夾Ok!</br>"; } /*******創建文件*****/ $file_name="/var/jsh1/1.txt"; if($fp = fopen($file_name,"w+")){ $buf="asd123123\n"; fwrite($fp, $buf); }else{ echo "file open error!"; } /*******刪除文件****/ //2個方法 delete 和unlink if(is_file($file_name)){ if(unlink($file_name)){ echo "刪除成功!</br>"; } }else{ echo "文件不存在!</br>"; } ~~~ 文件上傳 如果要上傳文件,需要把 ~~~ <formenctype=*"multipart/form-data"*action=*"upLoad.php"*name=*"myform"*method=*"post"*> ~~~ Enctype ?post 必須填寫成上面內容:下面界面如下: ![](https://box.kancloud.cn/2016-06-03_5750fd9116964.jpg) 采用前面講解的Mvc模式,代碼如下: ### 界面(V): ~~~ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>文件上傳</title> </head> <body> <form enctype="multipart/form-data" action="upProcess.php" name="myform" method="post"> <table> <tr><td align="center" colspan="2" ><font style="font-size: 40px; font-family:華文彩云">文件上傳</font></td></tr> <tr><td>請填寫用戶名:</td><td><input type="text" name="username" ></td></tr> <tr><td>請簡單介紹該文件:</td><td><textarea name="fileinfo" rows="10" cols="80"></textarea></td></tr> <tr><td>請選擇要上傳的文件:</td><td><input type="file" name="myfile"></td></tr> <tr><td><input type="submit" value="上傳文件"></td><td></td></tr> </table> </form> </body> </html> ~~~ ### 控制器(c) ~~~ <?php //獲得提交文件的用戶 $username=$_POST['username']; $fileinfo=$_POST['fileinfo']; //我們這邊需要使用到$FILES超全局數組,獲得上傳文件屬性,打印如下 echo "<pre>"; print_r($_POST); print_r($_FILES); echo "</pre>"; //獲取文件的大小 $file_size=$_FILES['myfile']['size']; if($file_size > 2*1024*1024){ echo "文件過大!,不能上傳大于2M的文件</br>"; exit(1); } //獲取文件的類型 $file_type = $_FILES['myfile']['type']; if($file_type!='image/jpg' && $file_type!='image/jpeg' ){ echo "文件類型只能是jpg的!</br>"; exit(1); } //判斷是否上傳成功 if(is_uploaded_file($_FILES['myfile']['tmp_name'])){ //把文件轉存到指定的目錄 /*注意: * 上傳文件的大小,在php.ini文件中有說明,默認最大2M,可以自己設置 * * */ //我們給每個用戶動態的創建一個文件夾 $user_path = "/var/myphp/file/".$username; //判斷該用戶是否存在文件夾 if(!file_exists($user_path)){ if(mkdir($user_path)){ echo "創建成功!</br>"; } } //$file_path=$user_path.$_FILES['myfile']['name']; $file_name=$_FILES['myfile']['name']; $file_path=$user_path."/".time().rand(1,1000).substr($file_name, strrpos($file_name, '.')); if(move_uploaded_file($_FILES['myfile']['tmp_name'], $file_path)){ echo "上傳成功!</br>"; }else{ echo "上傳失敗2!</br>"; } }else{ echo "上傳失敗1!</br>"; } ?> ~~~ ### 上傳文件細節 1.如果控制用戶上傳文件的大小<2M 2.如果控制用戶上傳的文件類型 3.如果防止用戶圖片覆蓋問題 解決方法: 給每個用戶創建一個文件夾(或者按照日期),將個人的文件保存的自己的文件夾里面 4.如果防止同一用戶文件名相同的問題 格式:路徑.時間戳.文件后綴 ~~~ $file_path=$user_path."/".time().rand(1,1000).substr($file_name,strrpos($file_name,'.')); ~~~ ###參考資料: [? ?PHP文件上傳后綴名與文件類型對照表](http://www.jb51.net/article/23511.htm)? 文件編程到此結束,有深入的問題歡迎在下面指出!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看