0

コードで発生している問題の解決策を探しています。私の問題に対する最も近い解決策はここで見つかりましたが、その解決策は私の問題に適合しませんでした。

アップロードされたファイルを PHP で自分のページにリストしています。各ファイルはファイルの場所に関連付けられています。それはうまくいきますが、私はPHPが初めてで、他のコードを実装するのに苦労しています。

役立つ場合は、私が使用しているコードを次に示します。

<?php
    // Directory Location
    $directory = './';

    // Timezone (UK BST)
    date_default_timezone_set(WET);

    // Define Byte Sizes
    function file_size($size)
    {
        $filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
        return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 1) . $filesizename[$i] : '0 Bytes';
    }

    // fetches all executable files in that directory and loop over each
    foreach(glob($file.'*wav') as $file) {

        // List Link to Files & Date/Time
        echo '<a class="files" href="'.$file.'">
              <span class="time">' . date("m/d/Y H:i", filemtime($file));

        // List File Name & Size
        echo '</span>&nbsp;&nbsp; '.$file.'&nbsp;&nbsp; 
        Size: '.file_size(filesize($file)).'</a>';
    }
?>

可能であれば、個々のファイルごとに PHP でダウンロード リンクを生成することをお勧めします。ファイルは次のようにリストされています: http://i.stack.imgur.com/N8Lxa.png

4

2 に答える 2

0

ファイルのリスト list.php 例

<?php

// salt for md5 check
$saltmd5 = '76t7gjbertdfv56w45sdve54etyv';


// Directory Location
$directory = './';

// Timezone (UK BST)
date_default_timezone_set(WET);

// Define Byte Sizes
function file_size($size)
{
    $filesizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
    return $size ? round($size/pow(1024, ($i = floor(log($size, 1024)))), 1) . $filesizename[$i] : '0 Bytes';
}

// fetches all executable files in that directory and loop over each
foreach(glob($file.'*wav') as $file) {

    // List Link to Files & Date/Time
    $file_md5 = md5("$file$saltmd5"); // md5 file check
    $file_link = "dwn.php?f=$file&c=$file_md5"; // file link

    echo '<a class="files" href="'.$file_link.'">
          <span class="time">' . date("m/d/Y H:i", filemtime($file));

    // List File Name & Size
    echo '</span>&nbsp;&nbsp; '.$file.'&nbsp;&nbsp; 
    Size: '.file_size(filesize($file)).'</a>';
}


?>

ファイルのダウンロード用 dwn.php 例

    <?php

    // salt for md5 check
    $saltmd5 = '76t7gjbertdfv56w45sdve54etyv';

$file_md5 = $_GET['c']; // md5 file check
$filename = $_GET['f']; // the name of the file that is downloaded


if($file_md5==md5("$filename$saltmd5")){

     // Directory Location
    $directory = './';

$size = filesize($directory . $filename) ;
header("Content-Type: application/force-download; name=\"". $filename ."\"");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ". $size ."");
header("Content-Disposition: attachment; filename=\"". $filename ."\"");
header("Expires: 0");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
echo (readfile($directory . $filename));


}
else
   {
    die('no existo'); //bad file
    }

?>
于 2013-06-12T12:02:24.353 に答える