#laravel
Вопрос:
Оба метода возвращают расширение загруженного файла, так почему же они оба существуют ? Не могу найти между ними никакой разницы.
Комментарии:
1. Расширение является функцией
Filesystem
класса Laravel, в то времяgetOriginalClientExtension
как является функциейUploadedFile
(компонента Symfony): github.com/laravel/framework/blob/8.x/src/Illuminate/Filesystem/… против github.com/symfony/symfony/blob/5.4/src/Symfony/Component/. … Вы можете использовать эти ссылки, чтобы проверить, что на самом деле делает каждая функция.2. @TimLewis спасибо тебе
3. Без проблем 😀 Кроме того, вот очень полезная ссылка: laravel.com/api/8.x , позволяет вам искать что угодно и предоставит ссылку на код для большинства классов, атрибутов, функций и т. Д.
4. @TimLewis еще раз спасибо, да, их документы просто потрясающие
5. Ха-ха, поработав с языками/фреймворками, которые имеют… скажем, «менее чем потрясающая» документация, я очень благодарен, что Laravel таков, каков он есть. Еще раз спасибо 😄
Ответ №1:
Эти методы доступны на каждом IlluminateHttpUploadedFile
.
getClientOriginalExtension()
возвращает расширение, извлеченное из исходного имени файла. Если вы пошлете image.png
, это будет png
extension()
возвращает расширение, извлеченное из самого файла (с использованием типа mime).
Например, если у вас есть image.pdf
файл, вы переименовываете его image.png
, а затем загружаете в свое приложение:
getClientOriginalExtension()
будет возвращатьpng
extension()
вернетсяpdf
(илиnull
если тип mime не может быть прочитан)
Комментарии:
1. Я допустил ошибку, о которой ты говорил
extension()
, и нетgetExtension()
. Они очень похожи, но я обновил свой ответ, чтобы он был более точным.2. да, я понимаю, я думал, что это просто опечатка, в любом случае, еще раз спасибо
3. Возможно, стоит добавить, что
getClientOriginalExtension
никогда не следует доверять определению типа файла из-за того, как легко клиенты могут лгать о расширении файла.
Ответ №2:
getClientOriginalExtension
получает расширение КЛИЕНТА, а не реальное расширение типа mime, чтобы использовать extension
его более безопасно