Код: Выделить всё
public function update(ProfileUpdateRequest $request): RedirectResponse
{
$request->user()->fill($request->validated());
if ($request->user()->isDirty('email')) {
$request->user()->email_verified_at = null;
}
if ($request->hasFile('avatar')) {
// Attempt to delete the old avatar
Storage::disk('public')->delete('avatars/' . $request->user()->avatar);
$file = $request->file('avatar');
$fileName = Str::uuid() . '.' . $file->getClientOriginalExtension();
$file->storeAs('avatars', $fileName, 'public');
$request->user()->avatar = $fileName;
}
$request->user()->save();
return Redirect::route('profile.edit');
}
Что я пробовал: < /p>
проверил это хранилище :: disk ('public')-> delete ('avatars /'. $ Request-> user ( )-> avatar); запускается до сохранения нового файла.
подтвердил, что файл существует в хранилище/App/public/avatars/перед удалением.
отладки с DD (Storage :: Disk ('public')-> exists ('avatars/'. $ request-> user ()-> avatar)); перед вызовом удаления.
подтвердил, что $ request-> hasfile (' avatar ') возвращает true < /code>, поэтому условие выполняется.
удалено все из функции и тестируемое только удаление: < /p>
< /blockquote>
dd(Storage::disk('public')->delete('avatars/' . $request->user()->avatar));
< /code>
В этом случае аватар был успешно удален, что делает эту проблему еще более незначительной. < /p>
Вопросы:
Почему не Старый аватар, который удаляется в полной функции?
Может ли быть причина, по которой хранилище :: lelete () работает изолированно, но не при использовании перед хранением нового файла?
Как я могу убедиться, что старый аватар Правильно удалено до сохранения нового?
Любое понимание будет высоко оценено! < /p>
Подробнее здесь: https://stackoverflow.com/questions/794 ... -a-new-one