2017-01-03 8 views
0

У меня есть изображение с именем В-семь церквей-оф-& -Istanbul.jpg откровение,Laravel Файл существует функция не работает, если имя файла содержит специальные символы

Однако, имя файла сохранены в базе данных в этом формате; The-семь церквей-оф-26% откровение,-Istanbul.jpg

Я использую следующий код, а также игнорирование пространства

$cover = str_replace('%20', ' ', $cover); 

if (!\Illuminate\Support\Facades\File::exists(base_path($cover))) : 
      echo "file not found"; 
endif; 

Результат

файл не найден

Как я могу справиться со специальными символами в e имена файлов?

+0

удалить 'base_path'. который дает только имя файла и удаляет путь к файлу. это не будет работать, если файл не находится в том же каталоге, что и public/index.php –

+0

i удален base_path, но он не работает –

+0

Извините, я думал о basename(). переносите –

ответ

1

Возможно, у вас могут возникнуть проблемы с URL-кодированными значениями, поэтому urldecode может быть вашим другом. You can see the docs for this here

$cover = urldecode($cover); 

if (!\Illuminate\Support\Facades\File::exists(base_path($cover))) : 
      echo "file not found"; 
endif 
+1

Спасибо, это работа для меня –

0

Пожалуйста, проверьте ниже любой из 2 это работает отлично. я проверил это.

$ file = base_path(). '/ Uploads/The-seven-Церкви-of-the-Revelation- & -Istanbul.jpg';

 if(file_exists($file)){ 
      echo "File Found"; 
     }else{ 
      echo "File Not Found"; 
     } 

или

$file = base_path().'/uploads/The-seven-Churches-of-the-Revelation-&-Istanbul.jpg'; 

     if(!File::exists($file)){ 
      echo "File Found"; 
     }else{ 
      echo "File Not Found"; 
     } 

 Смежные вопросы

  • Нет связанных вопросов^_^