Laravel Не удалось получить размер файла для файла в месте

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

        if (file_exists($filePath)) {
            return Storage::download($filePath, $fileName);
        }

Путь к файлу проверяется перед тем, как убедиться, что файл существует.
Ошибка возникает из строки vendor/league/flysystem-local/LocalFilesystemAdapter.php 418.

    public function fileSize(string $path): FileAttributes
    {
        $location = $this->prefixer->prefixPath($path);
        error_clear_last();

        if (is_file($location) && ($fileSize = @filesize($location)) !== false) {
            return new FileAttributes($path, $fileSize);
        }

        throw UnableToRetrieveMetadata::fileSize($path, error_get_last()['message'] ?? '');
    }

Я установил точку останова на линии

$location = $this->prefixer->prefixPath($path);

и обнаружил, что $location задается какой-то странной конкатенацией пути к папке и полного пути к файлу.

C:\Users\tomva\Projects\laravel\storage\app\C:/Users/tomva/Projects/laravel/storage/app/pph/482678575-0150974001684180496/1283_CO1SAL_202301_O.pdf

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

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

$size = Storage::size($filePath);

Но использование is_file($filePath) и filesize($filePath) работает нормально;

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

Кто-нибудь знает, что может вызвать это?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
99
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема в том, что вы используете путь к файлу в качестве аргумента для storage::download().

В storage::download() уже есть путь к этому каталогу, вам просто нужно передать имя файла, который вы хотите загрузить, в качестве первого аргумента. Второй параметр — это имя файла, которое пользователи увидят при загрузке файла.

Вот пример: -

 Storage::download($fileName, '$userShownFileName');

Где $fileName — исходное имя файла, а $userShownFileName — имя файла для пользователей при загрузке. Вы можете прочитать больше в документации laravel.

Другие вопросы по теме

Как исправить, что контроллер целевого класса не существует в Laravel? Он работает на другом контроллере, но не работает на этом конкретном контроллере
Использовать функцию многострочной стрелки в методе доступа в моделях laravel
Ошибка при загрузке ролей с разрешениями пользователей laravel
1452 — Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не работает в Laravel 10 — SQLSTATE [23000]: нарушение ограничения целостности
Ошибка синтаксического анализа: синтаксическая ошибка, неожиданный '|', ожидание переменной (T_VARIABLE)
Как сделать ввод с уникальным правилом в схеме мутации?
Как установить структуру папок в соответствии с темой в сборке laravel vite js
Как использовать Laravel Echo в блейд-файлах без Vite/Mix?
Как отправить сообщение с laravel на номер телефона пользователя с помощью firebase?
Как заставить работать нумерацию страниц в laravel с помощью пользовательского инструмента Nova 4