Fungsi direktori fail cakera rangkaian
1, Edit halaman html
Buat fail netdisk_html.php baharu:
Reka bentuk muka hadapan cakera rangkaian, kodnya adalah seperti berikut:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/2 0002 * Time: 上午 10:07 */ ?> <h2>在线网盘</h2> <!--目录列表--> <div> 您的位置:主目录 </div> <!--文件列表--> <table border="1" cellpadding="3" cellspacing="0" width="100%"> <tr bgcolor="skyblue"><th>文件名</th><th>大小</th><th width="30%">上传时间</th><th>操作</th></tr> <!--目录列表--> <tr> <td>目录1</td> <td>-</td> <td>2018-03-02 15:57:56</td> <td align="center"> <a href="">打开</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> <tr> <td>目录2</td> <td>-</td> <td>2018-03-02 15:58:00</td> <td align="center"> <a href="">打开</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> <!--文件列表--> <tr> <td>1.jpg</td> <td>3KB</td> <td>2018-03-02 16:06:12</td> <td align="center"> <a href="">下载</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> </table> <form method="post"> 新建文件夹:<input type="text" name="newfolder"> <input type="submit" value="创建"> </form> <form method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit" value="上传"> </form>
2, Establish a database
Halaman paparan asas dipaparkan, Data ditulis secara santai Langkah seterusnya adalah untuk mewujudkan sambungan dengan pangkalan data, melintasi maklumat dalam pangkalan data dan memaparkannya pada halaman hujung hadapan dan sambungan digunakan kemudian, kami menulis kelas alat untuk memudahkan sambungan seterusnya dengan pangkalan data, buat fail public_sql.php baharu:
Kodnya adalah seperti berikut: rreee
3, melintasi data pangkalan data dan memaparkannya ke halaman hujung hadapan
Selepas kelas awam sambungan pangkalan data ditulis, teruskan seterusnya Tanya pangkalan data untuk melintasi dan memaparkan fail direktori Pada masa yang sama, anda boleh melintasi direktori yang sepadan mengikut $folder_id:
Fail index.php baharu:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/2 0002 * Time: 上午 9:42 */ //初始化数据库连接 function dbInit(){ $link=mysql_connect('localhost','root','root'); if(!$link){ die('lian连接数据库失败'.mysql_error()); } //设置字符集,选择数据库 mysql_query('set names utf8'); mysql_query('use php'); } //查询数据库显示错误信息 function query($sql){ if($result=mysql_query($sql)){ //执行成功 return $result; }else{ //执行失败,显示错误信息以便于调试程序 echo 'sql执行失败:<br>'; echo '错误的sql为:',$sql,'<br>'; echo '错误的代码为:',mysql_errno(),'<br>'; echo '错误的信息为:',mysql_error(),'<br>'; die(); } } //查询所有数据并返回结果集 function fetchAll($sql){ //执行query()函数 if($result=query($sql)){ //执行成功 //遍历结果集 $rows=array(); while($row=mysql_fetch_array($result,MYSQL_ASSOC)){ $rows[]=$row; } //释放结果集资源 mysql_free_result($result); return $rows; }else{ //执行失败 return false; } } //查询单条数据并返回结果集 function fetchRow($sql){ //执行query()函数 if($result=query($sql)){ //从结果集取得依次数据即可 $row=mysql_fetch_array($result,MYSQL_ASSOC); return $row; }else{ return false; } }
Kod di atas mendapat $folder dan $file, yang mewakili masing-masing Direktori dan fail kedua-duanya adalah tatasusunan dua dimensi yang menyimpan maklumat dalam pangkalan data. Fail bahagian hadapan diperkenalkan melalui require('netdisk_html.php'). Seterusnya, anda hanya perlu melintasi $folder dan $file untuk dipaparkan dalam jadual. Anda boleh
Tambah kod untuk melintasi data dalam senarai fail dan kandungan senarai direktori netdisk_html.php:
<?php /** * Created by PhpStorm. * User: Administrator * Date: 2018/3/2 0002 * Time: 上午 9:39 */ header("Content-Type:text/html;charset=utf-8"); //载入数据库操作文件 require("./public_sql.php"); //初始化连接数据库操作 dbInit(); //获取当前目录的id $folder_id=isset($_GET['folder'])?intval($_GET['folder']):0; //网盘文件列表 //请求目录不是根目录时,获取当前访问目录的信息 $path=array(); if($folder_id!=0){ //根据当前目录ID查询目录列表 $sql="select folder_name,folder_path from netdisk_folder where folder_id=$folder_id"; $current_folder=fetchRow($sql); $file_ids=$current_folder['folder_path']; //根据ID路径查询所有父级目录的信息 if($file_ids!=""){ $sql="select folder_id,folder_name from netdisk_folder where folder_id in($file_ids)"; $path=fetchAll($sql); //将当期目录追加到路劲数组的末尾 $path[]=array( 'folder_id'=>$folder_id, 'folder_name'=>$current_folder['folder_name'] ); } } //获取指定目录下的所有文件夹 $sql="select folder_id,folder_name,folder_time from netdisk_folder where folder_pid=$folder_id"; $folder=fetchAll($sql); //获取指定目录下的所有文件 $sql="select file_id,file_name,file_save,file_size,file_time from netdisk_file where folder_id=$folder_id "; $file=fetchAll($sql); //echo "<pre>"; //print_r($folder); //echo "</pre>"; //引进html页面 require('netdisk_html.php');
4, paparan halaman
adalah seperti berikut:
<?php <!--文件列表--> <table border="1" cellpadding="3" cellspacing="0" width="60%"> <tr bgcolor="skyblue"><th>文件名</th><th>大小</th><th>上传时间</th><th>操作</th></tr> <!--目录列表--> <?php foreach ($folder as $v): ?> <tr> <td><?php echo $v['folder_name']?></td> <td>-</td> <td><?php echo $v['folder_time']?></td> <td align="center"> <a href="">打开</a> |<a href="">复制</a> |<a href="">删除</a> </td> </tr> <?php endforeach;?> <!--文件列表--> <?php foreach ($file as $v):?> <tr> <td> <?php echo $v['file_name'] ?> </td> <td><?php echo round($v['file_size']/1024) ?>KB</td> <td><?php echo $v['file_time'] ?></td> <td align="center"><a href="">下载</a>| <a href="">复制</a>| <a href="">删除</a></td> </tr> <?php endforeach;?> </table>
4, paparan halaman
adalah seperti berikut:
5