Laravel / Laravel-Excel отсутствует косая черта в URL ресурса - PullRequest
0 голосов
/ 06 декабря 2018

Я загружаю файлы в Laravel для обработки с Laravel-Excel .У меня возникает следующая проблема:

Когда я делаю это:

$file = $request->file('file')->store('Questionnaires', ['disk' => 'public']);

$file = asset($file);

dd($file);

Я получаю что-то, как ожидалось, например:

http://project.test/Questionnaires/filename.xlsx

Однако, когда я передаю $file это в Laravel-Excel, таким образом:

$collection = Excel::toCollection(new QuestionnairesImport, $file);

я получаю эту ошибку:

File not found at path: http:/project.test/Questionnaires/filename.xlsx

Это отсутствует косая черта в http:/ то есть http://

Что происходит?

1 Ответ

0 голосов
/ 07 декабря 2018

ОК, я решил эту проблему и сохраняю здесь ответ для моей собственной записи, и на тот случай, если он пригодится кому-то еще.

Отказ от ответственности: Я до сих пор не знаю, с кем возникла ошибка, поэтому рассмотримэто обходной путь / исправление ошибки / ужасная идея - как вам нравится.

Я изменил два основных файла следующим образом:

В функции readStream() в vendor/league/flysystem/src/adapter/local.php:

    // original lines, removed:
    //$location = $this->applyPathPrefix($path);
    //$stream = fopen($location, 'rb');

    // my addition (1 line):
    $stream = fopen(asset($path), 'rb');

В функции readStream() in vendor/league/flysystem/src/filesystem.php:

    // original line, removed:       
    //$this->assertPresent($path);

    // my addition (1 line):
    $path = str_replace('http:/a','http://a', $path);

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

Во второй функции он не смог подтвердить наличие файла, поскольку он был удален из-за того, что был удален один из слэшей (все еще не совсем понятно, как ...).Поэтому я просто заменил строку, чтобы вставить ее обратно («а» - это первая буква названия моего проекта в APP_URL в .ENV - , для этого нужно заменить ее на первую букву вашего проектана работу .

Это ужасно грязный способ сделать это, но он работает. Надеюсь, я найду лучшее решение.

...