Php 下载代码(readfile)给我一个空的或损坏的文件
我试图构建一个下载页面,通过从数据库获取文件信息来获取文件id和生成下载链接 有点用!出于某种原因,我从这个页面得到了一个文件,但它不是一个真正的文件! 例如,当我将图片id发送到此页面时,将下载一张图片,但它不会打开,并且它的大小实际上比实际大小小 这是我的密码Php 下载代码(readfile)给我一个空的或损坏的文件,php,file,Php,File,我试图构建一个下载页面,通过从数据库获取文件信息来获取文件id和生成下载链接 有点用!出于某种原因,我从这个页面得到了一个文件,但它不是一个真正的文件! 例如,当我将图片id发送到此页面时,将下载一张图片,但它不会打开,并且它的大小实际上比实际大小小 这是我的密码 <?php require_once('class/comon.php'); require_once('class/db.php'); $file_id = isset($_GET['id']) &&am
<?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 );
?>
然后我把输出放在url上,它会显示图片,这样就不会有问题了看起来你想要的是
readfile('http://localhost/....)
或文件的绝对本地文件路径
要使用URL字符串,您需要提供读取文件的协议。thanx我在localhost之前添加了“http://”,现在我得到一个大小为0的空文件!当我打印出路径并将输出放在url上时,它仍然显示picure@max,在发送内容长度头时,还需要更正
filesize()
调用中的路径。thanx实际上我发现我不应该只使用相对路径来设置文件大小,它现在可以工作,但由于某些原因它不显示图片,它在文本文件中添加了一些奇怪的字符,但是zip文件还可以!
echo 'localhost/Lancer/attach/'.$location.'/'.$filename;