быдлокод (+/-)
<?php
ob_start();
$dnldir = 'data/files/';
$infodir = 'data/info/';
$datafile = 'data/files.dat';
function dnl($dnl) {
global $dnldir, $infodir;
$data = explode('###', file_get_contents($infodir . $dnl));
$file = file_get_contents($dnldir . $dnl);
header('Content-Type: application/force-download');
header('Content-Description: inline; File Transfer');
header('Content-Disposition: attachment; filename="' . $data[0] . '";', false);
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . strlen($file));
#readfile($dnldir . $data[1]);
echo $file;
exit;
}
if (isset($_GET['dnl'])) {
$dnl = $_GET['dnl'];
dnl($dnl);
}
if (isset($_POST['submit']) && !empty($_FILES['file']['name'])) {
$filename = substr(md5(uniqid(time())), 0, 8);
file_put_contents($dnldir . $filename, file_get_contents($_FILES['file']['tmp_name']));
$data = basename($_FILES['file']['name']) . '###' . $filename . PHP_EOL;
file_put_contents($datafile, $data, FILE_APPEND | LOCK_EX);
file_put_contents($infodir . $filename, $data);
echo '<h3>Downloaded</h3>';
header('Refresh: 1; URL=?');
exit;
} else {
echo '<pre>' . print_r($_FILES, 1) . '</pre>';
}
echo '<h2>Test dnl</h2>';
echo '<form action="" enctype="multipart/form-data" method="post">
<input name="file" type="file" />
<input type="submit" name="submit" value="Загрузить" />
</form>';
$files = file($datafile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
foreach($files as $key => $file) {
$fileinfo = explode('###', $file);
echo '<div><a href="?dnl=' . $fileinfo[1] . '">' . $fileinfo[0] . '</a></div><hr />';
}совсем забыл простые вещи, косячил на банальном, но написал, проверил