Local.php 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. if ( ! defined('BASE_PATH')) exit('No direct script access allowed');
  3. class StorageHandle{
  4. //本地存储
  5. var $data_dir;
  6. public function __construct(){
  7. $data_dir = BASE_PATH.DOMAIN;
  8. $data_dir = rtrim($data_dir,'/');
  9. $this->data_dir = $data_dir.'/';
  10. }
  11. public function exists($filename){
  12. return is_file($this->get_file($filename));
  13. }
  14. public function read($filename){
  15. return file_get_contents($this->get_file($filename));
  16. }
  17. public function write($filename,$content){
  18. return file_put_contents($this->get_file($filename),$content);
  19. }
  20. public function url($filename){
  21. //return false; //不提供URL方式读取
  22. return rtrim(DOMAIN,'/').'/'.$this->get_file($filename,false);
  23. }
  24. public function delete($filename){
  25. return unlink($this->get_file($filename));
  26. }
  27. public function error(){
  28. return false;
  29. }
  30. private function get_file($key,$pre = true){
  31. if(NO_KEY || NO_SECOND_FLODER){
  32. if(!$pre) return $key;
  33. return $this->data_dir.$key;
  34. }
  35. $letter1 = substr($key,0,1);
  36. $letter2 = substr($key,0,2);
  37. $dir = $this->data_dir.$letter1.'/'.$letter2;
  38. if(!is_dir($dir)){
  39. if(!mkdir($dir,0777,true)){
  40. if(!$pre) return $key;
  41. return $this->data_dir.$key;
  42. }
  43. }
  44. if(!$pre) return $letter1.'/'.$letter2.'/'.$key;
  45. return $dir.'/'.$key;
  46. }
  47. }