Удалить файлы, загруженные на внешний диск (DigitalOcean) в laravel - PullRequest
1 голос
/ 26 сентября 2019

Я использую Digital Ocean (do) для сохранения файлов, а не для хранения на моем сервере, теперь я могу загружать файлы без проблем, но мне нужно удалить загруженные файлы, и не только в БД, я пытался удалитьэто с:

Storage::delete('url/to/file');
unset('url/to/file);

, но это не работает.

Это мой код

$upload = Upload::find($id);
$upload->delete();
Storage::delete($upload->getVideo()); //it doesn't give me any mistakes
//$upload->getVideo(); retun the url
$upload->delete();

Для загрузки файлов я использую этот код:

$path = Storage::disk('do')->putFileAs( $order->user->hash, $request->file('file'), bin2hex(random_bytes(24)).'.'.$extencion, 'public');

1 Ответ

0 голосов
/ 26 сентября 2019

Укажите путь (тот же, который вы использовали для загрузки) для функции удаления, чтобы удалить файлы из вашего Digital Ocean Space

Storage::disk('digital-ocean')->delete('path/to/file.jpg');

Было бы проблемой безопасности, если бы кто-либо мог удалить файл с помощьюпросто получая URL-адрес, который вы используете для публичного предоставления файла

Из Документов

Удаление файлов

Метод delete принимает одно имя файла илимассив файлов для удаления с диска:

use Illuminate\Support\Facades\Storage;

Storage::delete('file.jpg');

Storage::delete(['file.jpg', 'file2.jpg']);

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

use Illuminate\Support\Facades\Storage;

Storage::disk('s3')->delete('folder_path/file_name.jpg');
...