показать размер файла при загрузке файла php curl - PullRequest
0 голосов
/ 14 февраля 2020

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

    $file_url ='http://example.com/dl/dlfile.zip';

    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file_url)); 
    // header('Content-Transfer-Encoding: chunked'); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    $stream = fopen('php://output', 'w');
    $ch = curl_init($file_url);

    curl_setopt($ch, CURLOPT_INFILESIZE, filesize($file_url));

    curl_setopt($ch, CURLOPT_READFUNCTION, function($ch, $fd, $length) use ($stream) {
        return fwrite($stream, fread($fd, $length));
    });
    curl_exec($ch);
    curl_close($ch);
    exit();

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

1 Ответ

0 голосов
/ 14 февраля 2020

Добавьте следующий заголовок перед заголовком Content-Disposition, чтобы отправить размер файла в браузер:

header("Content-Length: ".filesize($file_url));

Источник

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