Загруженный файл сохранен с 0 кб и поврежден


У меня проблема со скриптом загрузки , когда я загружаю любой файл, он сохраняется с 0 кб. Есть какие-нибудь идеи? Вот мой PHP-скрипт

<?php
$file = $_GET['fname'];
$fullpath = get_bloginfo('template_url')."/application/display/1358947404.pdf";
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fullpath));
header('Expires: 0');
header('Cache-Control: must-revalidate');
ob_clean();
flush();
readfile($fullpath);
?>
Author: Niraj Desai, 2013-01-24

2 answers

Пожалуйста, добавьте также заголовок длины содержимого.

Пожалуйста, попробуйте это: -

<?php
$file = $_GET['fname'];

$fullpath = get_bloginfo('template_url')."/application/display/1358947404.pdf";

$headers = get_headers($fullpath, 1);// use file absolute path here
$fsize = $headers['Content-Length'];

header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fullpath));
header('Expires: 0');
header('Cache-Control: must-revalidate');
header("Content-Length: " . $fsize);
ob_clean();
flush();
readfile($fullpath);
?>
 1
Author: Roopendra, 2013-01-24 08:22:37

Попробуйте приведенный ниже код, надеюсь, он вам поможет.

Я проверил это на своем локальном хостинге.

$file = $_GET['fname'];

$fullpath = get_bloginfo('template_url')."/application/display/1358947404.pdf";
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($fullpath));
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: ' . filesize($fullpath));
ob_clean();
flush();
readfile($fullpath);
 0
Author: Devang Rathod, 2013-01-24 06:36:05