PHP readfile всегда возвращает "Ошибка сети" - PullRequest
0 голосов
/ 10 июля 2019

Я хочу загрузить изображения с URL с функцией readfile(), но по окончании загрузки возвращает:

Ошибка: ошибка сети

Это мой код:

<?php

    $file = $_REQUEST['file'];
    $file_extension = end(explode('.', $file));
    $file_name = end(explode('/', $file));
    $filepath = str_replace('https://example.org/', '', $file);

    header('Content-Description: File Transfer');
    header('Content-Type: image/jpeg');
    header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($filepath));
    flush(); // Flush system output buffer
    readfile($filepath);
    exit;

Я пробовал по-разному (fread(), fopen(), ...), но результат тот же.

1 Ответ

0 голосов
/ 10 июля 2019

Кажется, что это ведет себя как ожидалось, см. https://www.php.net/manual/en/function.readfile.php для следующего текста:

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

В соответствии с имеющейся у вас документациейвключить упаковщики fopen, чтобы эти (ориентированные на файлы) API-интерфейсы работали по сети

...