Local.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. $dir = $this->data_dir.$key;
  33. if(!is_dir($dir)){
  34. if(!mkdir($dir,0777,true)) die(json_encode(array('error'=>'cannot_make_dir')));
  35. }
  36. if(!$pre) return $key;
  37. return $dir;
  38. }
  39. $letter1 = substr($key,0,1);
  40. $letter2 = substr($key,0,2);
  41. $dir = $this->data_dir.$letter1.'/'.$letter2;
  42. if(!is_dir($dir)){
  43. if(!mkdir($dir,0777,true)){
  44. if(!$pre) return $key;
  45. return $this->data_dir.$key;
  46. }
  47. }
  48. if(!$pre) return $letter1.'/'.$letter2.'/'.$key;
  49. return $dir.'/'.$key;
  50. }
  51. }