php文件上傳及下載附帶顯示文件及目錄功能
主頁(yè)面wenjianceshi.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>文件</title> <link href="../FENGZHUANG/bootstrap/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" type="text/css" /> <script src="../FENGZHUANG/jquery-3.1.1.min.js"></script> <script src="../FENGZHUANG/bootstrap/js/bootstrap.min.js"></script> <style type="text/css"> *{ font-family:"微軟雅黑";} #wai{width:400px; margin:0 auto; padding:0px;} #chuanshu{ width:400px; margin:0 auto; padding:0px;} .waibtn{ width:100%;; height:30px;} .wjm,.wjbtn{ width:50%; height:100%; float:left; } </style> </head> <body> <div id="chuanshu"> <form role="form" action="upload.php" method="post" enctype="multipart/form-data"> <div class="form-group"> <label for="inputfile">文件輸入</label> <input type="file" name="file" id="inputfile"> </div> <button type="submit" class="btn btn-default">上傳</button> </form> </div> <br /><br /><br /> <div id="wai"> <?php session_start(); //定義目錄 $fname = "./a";//需要顯示的目錄 if(!empty($_SESSION["fname"])) { $fname = $_SESSION["fname"]; } $pname = dirname($fname); //取上級(jí)目錄 if(realpath($fname)=="D:\\wamp\\www\\lt\\a")//注意路徑的匹配 { }//到達(dá)了需要顯示的最上層目錄就不顯示上一層標(biāo)簽了 else { echo "<button type='button' id='prev' class='btn waibtn btn-success' url='{$pname}'>返回上一層</button>"; } //遍歷目錄下的所有文件顯示 $arr = glob($fname."/*"); foreach($arr as $v) { $name = basename($v); //從完整路徑中取文件名 $name = iconv("gbk","utf-8",$name); if(is_dir($v)) { echo "<button type='button' class='btn dir waibtn btn-primary' url='{$v}'>{$name}</button>"; } else { echo "<button type='button' class='btn waibtn item btn-default' url='{$v}'><div class='wjm'>{$name}</div><div class='wjbtn'><a href='download.php? url={$v}'><input type='button' value='下載' url='{$v}' class='download btn btn-warning btn-xs' /></a> </div></button>"; } } ?> </div> </body> <script type="text/javascript"> $(".dir").click(function(){ var url = $(this).attr("url"); $.ajax({ url:"chuli2.php", data:{url:url}, type:"POST", dataType:"TEXT", success: function(data){ window.location.href="wenjianceshi.php" rel="external nofollow" rel="external nofollow" ; } }); }) $("#prev").click(function(){ var url = $(this).attr("url"); $.ajax({ url:"chuli2.php", data:{url:url}, type:"POST", dataType:"TEXT", success: function(data){ window.location.href="wenjianceshi.php" rel="external nofollow" rel="external nofollow" ; } }); })</script> </html>
顯示:
上傳處理頁(yè)面upload.php
<?php if($_FILES["file"]["error"]) { echo $_FILES["file"]["error"]; } else { if($_FILES["file"]["size"]<10240000) { //防止文件名重復(fù) $filename = "./a/".time().$_FILES["file"]["name"]; //轉(zhuǎn)碼 $filename = iconv("UTF-8","gb2312",$filename); if(file_exists($filename)) { echo "該文件已存在"; } else { //保存文件 move_uploaded_file($_FILES["file"]["tmp_name"],$filename); header("location:wenjianchuanshu.php"); } } else { echo "文件類型不對(duì)"; } }
點(diǎn)擊選擇文件之后選中了文件會(huì)顯示:
點(diǎn)擊上傳即可。
下載處理頁(yè)面download.php
<?php $url = $_GET["url"]; $bname = basename($url); header("Content-type:text/html;charset=utf-8"); $file_name="{$bname}"; //用以解決中文不能顯示出來(lái)的問(wèn)題 $file_name=iconv("utf-8","gb2312",$file_name); $file_sub_path=$_SERVER['DOCUMENT_ROOT']; $file_path="{$url}"; //首先要判斷給定的文件存在與否 if(!file_exists($file_path)){ echo "沒(méi)有該文件"; return ; } $fp=fopen($file_path,"r"); $file_size=filesize($file_path); //下載文件需要用到的頭 Header("Content-type: application/octet-stream"); Header("Accept-Ranges: bytes"); Header("Accept-Length:".$file_size); Header("Content-Disposition: attachment; filename=".$file_name); $buffer=10240000; $file_count=0; //向?yàn)g覽器返回?cái)?shù)據(jù) while(!feof($fp) && $file_count<$file_size){ $file_con=fread($fp,$buffer); $file_count+=$buffer; echo $file_con; } fclose($fp);
點(diǎn)擊下載會(huì)彈出下載框,然后進(jìn)行下載即可。
點(diǎn)擊文件夾或者上一層的處理頁(yè)面chuli2.php
<?php session_start(); $url = $_POST["url"]; $_SESSION["fname"] = $url;
以上所述是小編給大家介紹的php文件上傳及下載附帶顯示文件及目錄功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
PHP生成各種常見驗(yàn)證碼和Ajax驗(yàn)證過(guò)程
本文將通過(guò)實(shí)例講解使用PHP生成各種常見的驗(yàn)證碼包括數(shù)字驗(yàn)證碼、數(shù)字+字母驗(yàn)證碼、中文驗(yàn)證碼、算術(shù)驗(yàn)證碼等等以及其Ajax驗(yàn)證過(guò)程2016-01-01Laravel中任務(wù)調(diào)度console使用方法小結(jié)
這篇文章主要給大家簡(jiǎn)單介紹了Laravel中任務(wù)調(diào)度console使用方法,并附上一個(gè)簡(jiǎn)單的示例,希望對(duì)大家學(xué)習(xí)使用console能夠有所幫助2017-05-05淺談php中urlencode與rawurlencode的區(qū)別
下面小編就為大家?guī)?lái)一篇淺談php中urlencode與rawurlencode的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09laravel5環(huán)境隱藏index.php后綴(apache)的方法
今天小編就為大家分享一篇laravel5環(huán)境隱藏index.php后綴(apache)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10Yii1.0 不同頁(yè)面多個(gè)驗(yàn)證碼的使用實(shí)現(xiàn)
這篇文章主要介紹了Yii1.0 不同頁(yè)面多個(gè)驗(yàn)證碼的使用實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03ThinkPHP3.2.3框架Memcache緩存使用方法實(shí)例總結(jié)
這篇文章主要介紹了ThinkPHP3.2.3框架Memcache緩存使用方法,結(jié)合實(shí)例形式總結(jié)分析看thinkPHP框架下Memcache緩存各種調(diào)用方法與配置相關(guān)操作技巧,需要的朋友可以參考下2019-04-04