06-04-2024
This commit is contained in:
88
_test/files.php
Normal file
88
_test/files.php
Normal file
@@ -0,0 +1,88 @@
|
||||
<?php
|
||||
$files = array();
|
||||
$dir = new DirectoryIterator('.');
|
||||
foreach ($dir as $fileinfo) {
|
||||
$files[$fileinfo->getMTime()][] = $fileinfo->getFilename();
|
||||
}
|
||||
|
||||
ksort($files);
|
||||
|
||||
|
||||
?>
|
||||
|
||||
|
||||
<?php
|
||||
|
||||
$it = new DirectoryIterator(__DIR__);
|
||||
foreach ($it as $fileinfo) {
|
||||
if (!$fileinfo->isDot())
|
||||
var_dump($fileinfo->getFilename());
|
||||
}
|
||||
|
||||
$it = new FilesystemIterator(__DIR__);
|
||||
foreach ($it as $fileinfo) {
|
||||
echo $fileinfo->getFilename() . "\n";
|
||||
}
|
||||
|
||||
$iterator = new DirectoryIterator(dirname(__FILE__));
|
||||
foreach ( $iterator as $fileinfo ) {
|
||||
var_dump($fileinfo->current()); // would return object(DirectoryIterator)
|
||||
}
|
||||
|
||||
$iterator = new FilesystemIterator(__DIR__, FilesystemIterator::CURRENT_AS_PATHNAME);
|
||||
foreach ( $iterator as $fileinfo ) {
|
||||
var_dump($iterator->current()) . "\n"; // Would return full path eg /www/examples/example.php
|
||||
}
|
||||
?>
|
||||
|
||||
<?php
|
||||
|
||||
// https://stackoverflow.com/questions/124958/glob-sort-array-of-files-by-last-modified-datetime-stamp
|
||||
|
||||
function files_attachment_list($id, $sort_by_date = false, $allowed_extensions = ['png', 'jpg', 'jpeg', 'gif', 'doc', 'docx', 'pdf', 'zip', 'rar', '7z'])
|
||||
{
|
||||
if (empty($id) or !is_dir(sprintf('files/%s/', $id))) {
|
||||
return false;
|
||||
}
|
||||
$out = [];
|
||||
foreach (new DirectoryIterator(sprintf('files/%s/', $id)) as $file) {
|
||||
if ($file->isFile() == false || !in_array($file->getExtension(), $allowed_extensions)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$datetime = new DateTime();
|
||||
$datetime->setTimestamp($file->getMTime());
|
||||
$out[] = [
|
||||
'title' => $file->getFilename(),
|
||||
'size' => human_filesize($file->getSize()),
|
||||
'modified' => $datetime->format('Y-m-d H:i:s'),
|
||||
'extension' => $file->getExtension(),
|
||||
'url' => $file->getPathname()
|
||||
];
|
||||
}
|
||||
|
||||
$sort_by_date && usort($out, function ($a, $b) {
|
||||
return $a['modified'] > $b['modified'];
|
||||
});
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
function human_filesize($bytes, $decimals = 2)
|
||||
{
|
||||
$sz = 'BKMGTP';
|
||||
$factor = floor((strlen($bytes) - 1) / 3);
|
||||
return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor];
|
||||
}
|
||||
|
||||
// returns a file info array from path like '/files/123/*.extensions'
|
||||
// extensions = 'png', 'jpg', 'jpeg', 'gif', 'doc', 'docx', 'pdf', 'zip', 'rar', '7z'
|
||||
// OS specific sorting
|
||||
print_r( files_attachment_list(123) );
|
||||
|
||||
// returns a file info array from the folder '/files/456/*.extensions'
|
||||
// extensions = 'txt', 'zip'
|
||||
// sorting by modified date (newest first)
|
||||
print_r( files_attachment_list(456, true, ['txt','zip']) );
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user