Удаление файла с помощью Laravel - PullRequest
0 голосов
/ 07 мая 2018

У меня есть проблема удаления файла из проекта Laravel. Файл находится в каталоге / storage / exports, он хранится на диске с помощью библиотеки Laravel Excel. Это мой код:

$path = $excel->store('xls', false, true)['full'];
...send the xls via mail....
Storage::delete($path);

Когда я проверяю наличие файла с помощью file_exist, я получаю значение true, поэтому Laravel может прочитать файл. Я также проверил разрешение для папки, и я даю все разрешения на эту папку с помощью chmod 777 Есть идеи?

Спасибо!

Ответы [ 3 ]

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

Даже если вы используете Laravel, вы можете использовать обычные функции PHP.

unlink($path);
0 голосов
/ 07 мая 2018

Драйвер хранилища уже знает корневую директорию, поэтому $ path должен быть относительным, а не полным. Так что, если ваш файл находится в: /this/is/the/full/path.xls, а конфигурация filesystems.disks.local.root установлена ​​на /this/is/the/full, вы, по сути, заставляете ее искать файл в /this/is/the/full/this/is/the/full/path.xls.

У вас есть два варианта.

1) Добавить новый драйвер в эту конфигурацию и напрямую ссылаться на него:

'custom_location' => [
    'driver' => 'local',
    'root' => '/some/other/root/path',
]

Storage::driver('custom_location')->delete($relativePathFromRoot)

2) Создать одноразовый номер:

$rootPath = '/some/other/root/path';
$client = Storage::createLocalDriver(['root' => $rootPath]);
$client->delete($relativePathFromRoot);
0 голосов
/ 07 мая 2018

Попробуйте сохранить файл в storage/app/exports. Класс Storage для хранения файлов по умолчанию: storage/app.

Может быть хорошей идеей вместо того, чтобы использовать класс Excel для хранения файла, вместо этого сохранить файл с помощью класса Storage: Storage::put('exports/excelfile.xls', $fileContents);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...