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_PROTO','http');
|
||||||
define('_HTTP_DOMAIN','localhost:8080'); // domain/IP with port if needed
|
define('_HTTP_DOMAIN','localhost:8080'); // domain/IP with port if needed
|
||||||
define('_HTTP_PATH','/');
|
define('_HTTP_PATH','/');
|
||||||
|
define('_SIZE_LIMIT','2000000'); // in bytes
|
||||||
?>
|
?>
|
38
index.php
38
index.php
@ -2,6 +2,15 @@
|
|||||||
// Load configuration
|
// Load configuration
|
||||||
include 'conf/config.php';
|
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
|
// Check if file have to be deleted
|
||||||
$data_dir = array_diff(scandir(_DATA_DIR), array('..', '.', '.gitkeep'));
|
$data_dir = array_diff(scandir(_DATA_DIR), array('..', '.', '.gitkeep'));
|
||||||
foreach ($data_dir as $data_dir_content)
|
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);
|
$data_conf = json_decode(file_get_contents(_DATA_DIR . "/" . $data_dir_content . "/info.json"),true);
|
||||||
if ($data_conf['expire'] < time())
|
if ($data_conf['expire'] < time())
|
||||||
{
|
{
|
||||||
$i = new DirectoryIterator(_DATA_DIR . "/" . $data_dir_content);
|
delTree(_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 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -27,6 +27,8 @@
|
|||||||
if ($_SERVER['REQUEST_METHOD'] === 'PUT')
|
if ($_SERVER['REQUEST_METHOD'] === 'PUT')
|
||||||
{
|
{
|
||||||
$rnd_data = mt_rand(10000,99999);
|
$rnd_data = mt_rand(10000,99999);
|
||||||
|
$filesize = 0 ;
|
||||||
|
|
||||||
mkdir(_DATA_DIR . "/" . $rnd_data);
|
mkdir(_DATA_DIR . "/" . $rnd_data);
|
||||||
$info_json = new stdClass();
|
$info_json = new stdClass();
|
||||||
$info_json->expire = time() + (7 * 24 * 60 * 60);
|
$info_json->expire = time() + (7 * 24 * 60 * 60);
|
||||||
@ -34,14 +36,26 @@
|
|||||||
|
|
||||||
$putdata = fopen("php://input", "r");
|
$putdata = fopen("php://input", "r");
|
||||||
$fp = fopen(_DATA_DIR . "/" . $rnd_data . "/file", "w");
|
$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);
|
fwrite($fp, $data);
|
||||||
}
|
}
|
||||||
fclose($fp);
|
|
||||||
fclose($putdata);
|
fclose($putdata);
|
||||||
|
fclose($fp);
|
||||||
|
|
||||||
|
if ($filesize < _SIZE_LIMIT )
|
||||||
|
{
|
||||||
print(_HTTP_PROTO . '://' . _HTTP_DOMAIN . _HTTP_PATH . 'data/' . $rnd_data . '/file');
|
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
|
// Informations for user
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'GET')
|
if ($_SERVER['REQUEST_METHOD'] === 'GET')
|
||||||
|
Loading…
Reference in New Issue
Block a user