Как я могу отобразить значок в зависимости от типа файла в представлении, используя Laravel 7?

#php #laravel #multifile-uploader

#php #laravel #загрузчик нескольких файлов

Вопрос:

Здравствуйте и спасибо, что нашли время, чтобы помочь мне с моим вопросом. У меня есть приложение-задача, которое отлично работает. Когда вы загружаете изображения, вы можете увидеть их эскизы и даже щелкнуть по ним и перейти на новую вкладку, чтобы просмотреть изображения на 100%. Проблема в том, что когда клиент загружает pdf, значок отображается как значок сломанного изображения. Это имеет смысл, поскольку тег img в теге a, очевидно, является значком изображения.

Мой вопрос в том, как я могу указать в моем show.blade.php что это изображение, когда это изображение, и pdf или dox, когда это PDF или doc? Как я уже сказал, приложение работает, поэтому единственный код, который меня интересует, следующий (если я не ошибаюсь, пожалуйста, дайте мне знать):

 ...
<a data-toggle="" href="/storage/upload/{{ $images[$i]['name'] }}" target="_blank">
    <img src="/storage/upload/{{ $images[$i]['name'] }}" class="image-fluid w-50">
 </a>

               </div>
               @endfor
               @else
               <p class="ml-3 mb-1">No files found</p>
               @endif

           </div>
  

Я ищу что-то вроде условия, в котором говорится: если img, отобразите большой палец, если нет, отобразите значок, представляющий «файл».

Любая помощь по этому вопросу была бы весьма признательна. Заранее благодарю вас.

Ответ №1:

Вы можете просто использовать бесплатный API для достижения этой цели без написания какого-либо кода. Используйте ссылку ниже, чтобы получить свой значок в соответствии с расширением.

 <img src="https://pro.alchemdigital.com/api/extension-image/pdf">
  

Для получения дополнительной информации прочитайте эту статью: Прочитайте эту статью

Ответ №2:

Чтобы заставить это работать, я изменил приведенный выше код на следующий:

      @if (in_array($extension = pathinfo($images[$i]['name'], PATHINFO_EXTENSION), ['jpg', 'png', 'bmp']))
        <a data-toggle="" href="/storage/upload/{{ $images[$i]['name'] }}" target="_blank">
            <img src="/storage/upload/{{ $images[$i]['name'] }}" class="image-fluid w-50">
         </a>
     @else
         <a data-toggle="" href="/storage/upload/{{ $images[$i]['name'] }}" target="_blank">
            <img src="{{ "/icons/{$extension}.jpg" }}" class="image-fluid w-50">
         </a>
     @endif
    
     </div>
   @endfor
   @else
   <p class="ml-3 mb-1">No images found</p>
   @endif
    
    </div>
  

Затем я добавил папку icons и заполнил ее изображениями значков в формате jpg. Я надеюсь, что это поможет кому-нибудь еще с той же проблемой.