Перестала отправляться картинка как ответ - PullRequest
0 голосов
/ 06 мая 2019

Этот код fc работал как шарм:

public static function File($relativeFilePath) {
        if (Storage::exists($relativeFilePath) == false) {
            $relativeFilePath = "/not_found.png";
        }
        $absoluteDiskPath = Storage::disk('local')->getDriver()->getAdapter()->getPathPrefix();
        $fullPath = $absoluteDiskPath.$relativeFilePath;
        $file = File::get($fullPath);
        $contentType = File::mimeType($fullPath);
        $response = response()->make($file, 200);
        $response->header("Content-Type", $contentType);
        return $response;

    }

Прямо сейчас вместо отправки изображения отправляется неправильный файл. PHP находит изображение, где оно хранится, и отправляет его содержимое (выполнение var_dump приведет к извлечению содержимого файла в почтальоне).

Но остро показывает маленький белый квадрат.

Я застрял. Обновлен люмен, восстановите код из предыдущего коммита (который работал) и все тот же). На снимке экрана вы можете увидеть результат.

Разрешения для папки хранения - 777, чтобы избежать проблем с разрешениями. Если я добавляю изображение в общую корневую папку и получаю к нему доступ напрямую (HTTP-сервер, а не вся структура Lumen), оно отображается. Мой HTTP-сервер - nginx vagrant

Image view

UPDATE

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

В ответ добавляется странное значение 0x0A в начале.

Weird 0x0A

Как так?

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Проблема возникла из-за пустой строки в начале файла PHP.

Проблема решена.

0 голосов
/ 06 мая 2019

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

Я предлагаю вам прокомментировать эту строку: $response->header("Content-Type", $contentType);, чтобы вы могли получить необработанный результат. Я предполагаю, что есть ошибка, которую вы затем можете исправить / продолжить отладку.
И, конечно, когда вы закончите, вы раскомментируете его снова

...