скачать код (readfile) дает мне пустой или поврежденный файл - PullRequest
2 голосов
/ 22 октября 2011

Я пытаюсь создать страницу загрузки, которая получает идентификатор файла и генерирует ссылку для загрузки, получая информацию о файлах из базы данных

это вроде работает! по какой-то причине я получаю файл с этой страницы, но на самом деле это не файл! например, когда я отправляю идентификатор изображения на эту страницу, изображение будет загружено, но оно не откроется, и его размер будет действительно меньше, чем

вот мой код

  <?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;

и затем я помещаю вывод в URL, и он показывает картинку, так что это не может быть проблемой

1 Ответ

3 голосов
/ 22 октября 2011

Похоже, вы хотите либо readfile('http://localhost/....'), либо абсолютный локальный путь к файлу.

Для использования строки URL необходимо предоставить протокол для чтения файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...