Laravel, загружающий большой файл, не найден - PullRequest
0 голосов
/ 17 мая 2018

Я занимаюсь разработкой сайта электронной коммерции для продажи файлов и всех загружаемых файлов или объемом более 500 МБ. поэтому для большей защиты я храню все файлы в папке хранилища и создаю диск как этот

'academy' => [
        'driver' => 'local',
        'root' => storage_path('app/academy'),
    ],

, так как я упоминаю, что все файлы имеют размер более 500 МБ, поэтому я не могу просто использовать Responce::download (после двух загрузок === заполнить память завершения работы сервера)

, поэтому я ищу в StackOverflow и нахожу ответы # 1 и # 2 , поэтому я использую этот код для загрузки файла:

$fs = Storage::disk('academy')->getDriver();

$fileName = $file; //-> path to file

$metaData = $fs->getMetadata($fileName);
$stream = $fs->readStream($fileName);

if (ob_get_level()) ob_end_clean();

return response()->stream(
    function () use ($stream) {
        while(ob_end_flush());
        fpassthru($stream);
    },
    200,
    [
        'Content-Type' => $metaData['type'],
        'Content-disposition' => 'attachment; filename="' . $metaData['path'] . '"',
    ]);

и после запуска получаю эту ошибку

"Файл не найден по пути: D: /laragon/www/store/storage/app/academy/7FrggloHEjjc72rVJO1jPdF10nJL57MBMBvfwpYE.zip"

в этом файле

D: \ laragon \ www \ store \ vendor \ league \ flysystem \ src \ Filesystem.php Строка 388

public function assertPresent($path)
{
    if ($this->config->get('disable_asserts', false) === false && ! $this->has($path)) {
        throw new FileNotFoundException($path);
    }
}

Самое смешное в этой ошибке - путь, который возвращается, если положить его в проводник Windows и открыть ZIP-файл (путь указан правильно)

и уже использованное хранилище php artisan: ссылка

1 Ответ

0 голосов
/ 18 мая 2018

Я не знаю, это ошибка или недостаток моих знаний о хранении в laravel framework:

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

Надеюсь, этот ответ кому-нибудь поможет!

...