> 백엔드 개발 > PHP 튜토리얼 > php 파일 서비스, '가상 마운트' 기타 디렉토리

php 파일 서비스, '가상 마운트' 기타 디렉토리

WBOY
풀어 주다: 2016-07-25 08:48:16
원래의
809명이 탐색했습니다.
暂不支持,断点下载.
  1. function base64url_encode($data) {
  2. return rtrim(strtr(base64_encode($data), ' /', '-_'), '=');
  3. }
  4. function base64url_decode($data) {
  5. return base64_decode(str_pad(strtr($data, '-_', ' /'), strlen($data) % 4, '=', STR_PAD_RIGHT));
  6. }
  7. function array_verify($var)
  8. {
  9. return isset($var)&&is_array($var) && count($var)>0;
  10. }
  11. function format_file_size($var)
  12. {
  13. if($var<1024) return $var.' B';
  14. if($var<1048576) return ($var/1024.0).' K';
  15. if($var<1073741824) return ($var/1048576.0).' M';
  16. return ($var/1073741824.0).' G';
  17. }
  18. $dir="F:";//不以/结尾
  19. $path="";
  20. if(array_verify($_GET)&&isset($_GET["path"]))
  21. {
  22. $path=base64url_decode($_GET["path"]);
  23. preg_match("#^[^/].*$|^.*.$|^..*$|./.|/.|./#",$path,$temp);
  24. if(array_verify($temp))
  25. {
  26. echo
  27. '
  28. ';
  29. echo "警告 index.php?path=".$_GET["path"]." 非法url
    ";
  30. exit;
  31. }
  32. $path=preg_replace("#[//]{2,}#","/",$path);
  33. }
  34. if(is_dir($dir.$path))
  35. {
  36. echo '
  37. ';
  38. echo "目录 ".$path."

    ";
  39. $dir_res=opendir($dir.$path);
  40. while($filen=readdir($dir_res))
  41. {
  42. if($filen!='.'&&$filen!='..')
  43. {
  44. if(is_file($dir.$path.'/'.$filen))
  45. {
  46. echo ''.$filen.' ('.format_file_size(filesize($dir.$path.'/'.$filen)).")
    n";
  47. }else
  48. {
  49. echo ''.$filen."
    n";
  50. }
  51. }else if($filen=='..')
  52. {
  53. preg_match("#([^/] /小左)*[^/] (?=/)#",$path,$parent);
  54. if(array_verify($parent))
  55. {
  56. echo ''.$filen."
    n";
  57. }else
  58. {
  59. echo ''.$filen."
    n";
  60. }
  61. }
  62. }
  63. echo '
  64. ';
  65. }
  66. else if(is_file($dir.$path))
  67. {
  68. $file_size = filesize($dir.$path);
  69. header("Content-type: application/octet-stream");
  70. header("Accept-Ranges: bytes");
  71. header("Accept-Length: ".$file_size);
  72. Header("Content-Disposition: attachment; filename=".basename($dir.$path));
  73. readfile($dir.$path);//大文件请选择其他方式
  74. }else
  75. echo "警告:非法访问!";
  76. ?>
复制代码


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿