Получение и отображение двоичных изображений из базы данных laravel - PullRequest
1 голос
/ 23 февраля 2020

Я пытаюсь вернуть изображения для каждой строки в моей базе данных через контроллер

public function getEmotions() {    

        $emotionsList = Emotions::all();

        $images = DB::table('emotions')->select('image')->get();

        return $images;

    }

Это возвращает сообщение об ошибке Искаженные символы UTF-8, возможно, неправильно закодированные

Я пытался это как решение

public function getEmotions() {    

        $emotionsList = Emotions::all();

        $images = DB::table('emotions')->select('image')->get();

        return utf8_encode($images);

    }

Но затем возвращается ошибка. Метод Illuminate \ Support \ Collection :: __ toString () должен возвращать строковое значение

Я застрял с ним сейчас Кто-нибудь может увидеть, где я иду не так?

Эти данные также передаются в файл Vue, из которого я хочу отобразить изображения. Могу ли я добавить это как {{emotion.image}}?

<label v-for="emotion in emotions" class="cb-container">{{ emotion.em_name }}                      
    <input name="emotions[]" type="checkbox" :value="emotion.id">
    <span class="checkmark"></span>
</label>

Ответы [ 2 ]

1 голос
/ 23 февраля 2020

$ images = DB :: table ('эмоции') -> выбрать ('image') -> get () ;

get() метод, предоставленный Laravel , возвращает экземпляр класса Illuminate\Support\Collection.

По определению

Класс Illuminate \ Support \ Collection обеспечивает свободное владение, удобная обёртка для работы с массивами данных.

Документация

Суть в том, что вам необходимо l oop через ваш $ images var и utf8_encode каждая строка отдельно, например

foreach($images as $image) {
 ...
}

Edit

Вы можете использовать

public function getEmotions() {    

   $emotionsList = Emotions::all();

   foreach($emotionsList as $emotion) {
      $emotion->image = 'data:image/jpeg;base64,' . base64_encode( $emotion->image);
   }

   return $emotionsList;
}

Использование

... v-for="emotion in emotions" ...
      <img src="$emotion->image"/>
0 голосов
/ 23 февраля 2020

Вы должны вернуть ответ:

return response($images->toArray());

Или, если вы хотите, чтобы он был закодирован в json:

return response()->json($images);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...