我一直在寻找解决我的代码问题的解决方案。找到了我问题的最近解决方案here但是该解决方案不符合我的问题。
我在我的页面上列出了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> '.$file.'
Size: '.file_size(filesize($file)).'</a>';
}
?>
如果可能的话,我希望在PHP中为每个单独的文件生成下载链接。文件列出如下:http://i.stack.imgur.com/N8Lxa.png
答案 0 :(得分:1)
您应该按以下方式使用上述SO答案的代码:
将您显示的链接更改为以下内容,将用户指向download.php并移交要下载的文件的信息:
echo '<a class="files" href="download.php?file='.$file.'"> ...
然后使用
添加带有SO答案内容的download.php$filename = $_GET['file'];
从网址中获取给定的文件名。
此外,您必须将header('Content-Type: application/pdf');
更改为您要下载的任何文件类型。
答案 1 :(得分: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> '.$file.'
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
}
?>