Initial import
This commit is contained in:
128
lib/File.php
Executable file
128
lib/File.php
Executable file
@@ -0,0 +1,128 @@
|
||||
<?php
|
||||
|
||||
class File {
|
||||
private $_path = null;
|
||||
private $_headers = [];
|
||||
|
||||
public function __construct($path = null) {
|
||||
if ($path instanceof File) {
|
||||
$this->_path = $path->path();
|
||||
}
|
||||
|
||||
$this->_path = $path;
|
||||
}
|
||||
|
||||
public function basename() {
|
||||
return pathinfo($this->_path, PATHINFO_BASENAME);
|
||||
}
|
||||
|
||||
public function dirname() {
|
||||
return pathinfo($this->_path, PATHINFO_DIRNAME);
|
||||
}
|
||||
|
||||
public function extension() {
|
||||
return pathinfo($this->_path, PATHINFO_EXTENSION);
|
||||
}
|
||||
|
||||
public function filename() {
|
||||
return pathinfo($this->_path, PATHINFO_FILENAME);
|
||||
}
|
||||
|
||||
public function delete() { $this->unlink(); }
|
||||
public function unlink() {
|
||||
unlink($this->_path);
|
||||
}
|
||||
|
||||
public function content() {
|
||||
return get_file_contents($this->_path);
|
||||
}
|
||||
|
||||
public function emit() {
|
||||
$headers = $this->_headers;
|
||||
|
||||
$headers['ETag'] = "\"" . $this->hash() . "\"";
|
||||
|
||||
foreach ($headers as $k=>$v) {
|
||||
header($k . ": " . $v);
|
||||
}
|
||||
readfile($this->_path);
|
||||
}
|
||||
|
||||
public function set_headers($data) {
|
||||
$this->_headers = $data;
|
||||
}
|
||||
|
||||
public function get_headers() {
|
||||
return $this->_headers;
|
||||
}
|
||||
|
||||
public function set_header($k, $v) {
|
||||
$this->_headers[trim($k)] = trim($v);
|
||||
}
|
||||
|
||||
public function exists() {
|
||||
return file_exists($this->_path);
|
||||
}
|
||||
|
||||
public function size() {
|
||||
return stat($this->_path)["size"];
|
||||
}
|
||||
|
||||
public function path() {
|
||||
return $this->_path;
|
||||
}
|
||||
|
||||
public function mime() {
|
||||
if (!file_exists($this->_path)) {
|
||||
return false;
|
||||
}
|
||||
return mime_content_type($this->_path);
|
||||
}
|
||||
|
||||
public function __toString() {
|
||||
return $this->_path;
|
||||
}
|
||||
|
||||
public function parent() {
|
||||
$p = $this->dirname();
|
||||
if ($p == "") {
|
||||
return false;
|
||||
}
|
||||
return new File($p);
|
||||
}
|
||||
|
||||
public function mkdir() {
|
||||
$p = $this->parent();
|
||||
if ($p) {
|
||||
if (!$p->exists()) {
|
||||
$p->mkdir();
|
||||
}
|
||||
}
|
||||
|
||||
if (!$this->exists()) {
|
||||
mkdir($this->_path, 0777);
|
||||
}
|
||||
}
|
||||
|
||||
public function hash($type = "sha256") {
|
||||
return hash_file($type, $this->_path);
|
||||
}
|
||||
|
||||
public function rename($to, $over=false) {
|
||||
if ($to == $this->path()) return false;
|
||||
if ((!$over) && file_exists($to)) return false;
|
||||
copy($this->path(), $to);
|
||||
if (!file_exists($to)) return false;
|
||||
unlink($this->path());
|
||||
$this->_path = $to;
|
||||
return true;
|
||||
}
|
||||
|
||||
public function get_chunk($from, $len) {
|
||||
$f = fopen($this->_path, "r");
|
||||
fseek($f, $from);
|
||||
$data = fread($f, $len);
|
||||
fclose($f);
|
||||
return $data;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user