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

1

您应该按以下方式使用提到的 SO 答案的代码:
将您显示的链接更改为以下内容,引导用户下载.php 并移交要下载的文件的信息:

echo '<a class="files" href="download.php?file='.$file.'"> ...

然后添加一个包含 SO 答案内容的 download.php,但使用

$filename = $_GET['file'];

从 url 中获取给定的文件名。

此外,您必须更改header('Content-Type: application/pdf');为要下载的任何文件类型。

于 2013-06-12T11:41:07.340 回答
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 回答