Просмотр поста

.
Koenig
(\/)____o_O____(\/)
быдлокод (+/-)
<?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 />';
}

совсем забыл простые вещи, косячил на банальном, но написал, проверил