我正在尝试构建一个下载页面,通过从数据库获取文件信息来获取文件ID和生成下载链接
它有点有效!由于某种原因,我从这个页面得到一个文件,但它不是一个真正的文件! 例如,当我向此页面发送图片ID时,将下载一张图片,但它不会打开,而且它的尺寸确实小于实际尺寸这是我的代码
<?php
require_once('class/comon.php');
require_once('class/db.php');
$file_id = isset($_GET['id']) && (int)$_GET['id'] != 0 ? (int)$_GET['id'] : exit;
$file = comon::get_fileinfo('files' , 'id' , $file_id );
if(!$file) exit;
foreach($file as $file){
$location = $file['location'];
$filename = $file['file_name'];
}
$ext = end(explode('.' , $filename ));
header( 'Pragma: public' );
header( 'Expires: 0' );
header( 'Cache-Control: must-revalidate, post-check=0, pre-check=0' );
header( 'Cache-Control: private', false );
header( 'Content-Type: application/'.$ext);
header( 'Content-Disposition: attachment; filename="'. basename($filename) . '";' );
header( 'Content-Transfer-Encoding: binary' );
header( 'Content-Length: ' . filesize( 'http://localhost/Lancer/attach/'.$location.'/'.$filename ) );
readfile( 'http://localhost/Lancer/attach/'.$location.'/'.$filename );
?>
我在页面上打印了文件路径
echo 'localhost/Lancer/attach/'.$location.'/'.$filename;
然后我将输出放在网址上,它显示图片,以便不能解决问题
答案 0 :(得分:3)
看起来您需要readfile('http://localhost/....')
或文件的绝对本地文件路径。
要使用URL字符串,您需要为readfile提供协议。