add "delTree" function and add size limit (#2)
This commit is contained in:
parent
36dbc27991
commit
4a285a3db8
@ -3,4 +3,5 @@
|
||||
define('_HTTP_PROTO','http');
|
||||
define('_HTTP_DOMAIN','localhost:8080'); // domain/IP with port if needed
|
||||
define('_HTTP_PATH','/');
|
||||
define('_SIZE_LIMIT','2000000'); // in bytes
|
||||
?>
|
38
index.php
38
index.php
@ -2,6 +2,15 @@
|
||||
// Load configuration
|
||||
include 'conf/config.php';
|
||||
|
||||
// Delete directory recursively
|
||||
function delTree($dir) {
|
||||
$files = array_diff(scandir($dir), array('.','..'));
|
||||
foreach ($files as $file) {
|
||||
(is_dir("$dir/$file")) ? delTree("$dir/$file") : unlink("$dir/$file");
|
||||
}
|
||||
return rmdir($dir);
|
||||
}
|
||||
|
||||
// Check if file have to be deleted
|
||||
$data_dir = array_diff(scandir(_DATA_DIR), array('..', '.', '.gitkeep'));
|
||||
foreach ($data_dir as $data_dir_content)
|
||||
@ -9,16 +18,7 @@
|
||||
$data_conf = json_decode(file_get_contents(_DATA_DIR . "/" . $data_dir_content . "/info.json"),true);
|
||||
if ($data_conf['expire'] < time())
|
||||
{
|
||||
$i = new DirectoryIterator(_DATA_DIR . "/" . $data_dir_content);
|
||||
foreach($i as $f) {
|
||||
if($f->isFile())
|
||||
{
|
||||
unlink($f->getRealPath());
|
||||
} else if(!$f->isDot() && $f->isDir()) {
|
||||
rrmdir($f->getRealPath());
|
||||
}
|
||||
}
|
||||
rmdir(_DATA_DIR . "/" . $data_dir_content );
|
||||
delTree(_DATA_DIR . "/" . $data_dir_content);
|
||||
}
|
||||
|
||||
}
|
||||
@ -27,6 +27,8 @@
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'PUT')
|
||||
{
|
||||
$rnd_data = mt_rand(10000,99999);
|
||||
$filesize = 0 ;
|
||||
|
||||
mkdir(_DATA_DIR . "/" . $rnd_data);
|
||||
$info_json = new stdClass();
|
||||
$info_json->expire = time() + (7 * 24 * 60 * 60);
|
||||
@ -34,14 +36,26 @@
|
||||
|
||||
$putdata = fopen("php://input", "r");
|
||||
$fp = fopen(_DATA_DIR . "/" . $rnd_data . "/file", "w");
|
||||
while ($data = fread($putdata, 1024))
|
||||
while ($data = fread($putdata, 1024) and $filesize < _SIZE_LIMIT )
|
||||
{
|
||||
$filesize += 1024 ;
|
||||
fwrite($fp, $data);
|
||||
}
|
||||
fclose($fp);
|
||||
fclose($putdata);
|
||||
fclose($fp);
|
||||
|
||||
if ($filesize < _SIZE_LIMIT )
|
||||
{
|
||||
print(_HTTP_PROTO . '://' . _HTTP_DOMAIN . _HTTP_PATH . 'data/' . $rnd_data . '/file');
|
||||
}
|
||||
else
|
||||
{
|
||||
delTree(_DATA_DIR . "/" . $rnd_data);
|
||||
print("File size exceeded (Max " . _SIZE_LIMIT . " bytes)");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
// Informations for user
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'GET')
|
||||
|
Loading…
Reference in New Issue
Block a user