如何在PHP中创建下载链接?
我可以使用sql在数据库中上载文件,但如何为其创建下载链接?就像当你在线下载东西时,会出现一个消息框,询问你是想用程序打开它还是保存它。如何在php中实现这一点?你能给我密码吗?我还是个笨蛋 将此代码与PHP代码一起放在一个页面上,从DB获取信息,并将其放在名称/大小/数据的变量中,然后链接到该页面如何在PHP中创建下载链接?,php,download,hyperlink,Php,Download,Hyperlink,我可以使用sql在数据库中上载文件,但如何为其创建下载链接?就像当你在线下载东西时,会出现一个消息框,询问你是想用程序打开它还是保存它。如何在php中实现这一点?你能给我密码吗?我还是个笨蛋 将此代码与PHP代码一起放在一个页面上,从DB获取信息,并将其放在名称/大小/数据的变量中,然后链接到该页面 <?php header('Content-Description: File Transfer'); header('Content-Type: application/octet-stre
<?php
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . $name_of_file);
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . $size_of_file);
echo $file_data;
?>
并非上面列出的所有标题都是严格必需的-事实上,只有内容类型标题才是使下载正常工作所真正必需的。内容处置标题可以包括在内,以便您可以指定正确的文件名;其他标题只是帮助浏览器更好地处理下载,如果您愿意,可以省略。 对这段代码进行一些编辑,使其在我的情况下工作。-用于MP3 您可以通过调用该文件
filedownload.php
,将其放入您的服务器
在本例中,从一个文件调用它,如从WordPress自定义字段调用
<a href="<?php bloginfo('url'); ?>/filedownload.php?download=<?php echo get_post_meta($post->ID, 'mymp3_value', true) ?>">MP3</a>
做起来很简单
<?php
$name_of_file = $_GET["download"];
header('Content-Description: File Transfer');
// We'll be outputting a MP3
header('Content-type: application/mp3');
// It will be called file.mp3
header('Content-Disposition: attachment; filename=' .$name_of_file);
header('Content-Length: '.filesize($name_of_file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
// The MP3 source is in somefile.pdf
//readfile("somefile.mp3");
readfile_chunked($name_of_file);
function readfile_chunked($filename) {
$chunksize = 1*(1024*1024); // how many bytes per chunk
$buffer = '';
$handle = fopen($filename, 'rb');
if ($handle === false) {
return false;
}
while (!feof($handle)) {
$buffer = fread($handle, $chunksize);
print $buffer;
}
return fclose($handle);
}
?>
“使用sql在数据库中上载文件”您是将文件作为blob存储在数据库中?还是存储在文件系统中?这很重要。我如何使用它直接从数据库下载文件?用户将文件上载到数据库中,当管理员需要检查该文件时,他当然需要下载该文件。我该如何做?如果您对PHP和D掌握不够B概念要使用上面的代码来完成您想要做的事情,您可能需要使用一个预制作的数据库管理解决方案,如PHPMyAdmin()取而代之。谢谢。我会去那里。还有一件事,当我在数据库中以blob形式存储文件时,我是否必须将文件名和文件大小单独存储在一列中,或者不必存储?我知道这可能看起来像个愚蠢的问题,但我真的是个傻瓜。无论如何,谢谢。@phpnoob也许这会有帮助:变量$file\u data和$name\u of\u of\u file从数据库中提取它们的值。为了简洁起见,Dav省略了执行此操作的部分代码。@phpnoob-您需要单独存储文件名,因为它与文件的数据(实际BLOB中存储的内容)无关。您可能只需查看查询结果中BLOB数据的大小即可计算文件大小。