ПриветYii2 Показать изображение хранится в поле базы данных BLOB
мне нужно отображать изображения, хранящиеся в полях базы данных BLOB в виде списка или аналогичный виджет от Yii2
У меня есть actionCreate, сохраняющий изображение в таблице с именем honra как BLOB
public function actionCreate()
{
$model = new Honra();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$file = UploadedFile::getInstance($model,'binaryfile');
$model->binaryfile=$file;
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
я га ве модели под названием Honra
class Honra extends \yii\db\ActiveRecord{
public static function tableName()
{
return 'honra';
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['nome', 'texto'], 'required'],
[['texto', 'binaryfile'], 'string'],
[['ativo'], 'integer'],
[['nome'], 'string', 'max' => 255],
[['fileName'], 'string', 'max' => 100],
[['fileType'], 'string', 'max' => 50]
];
}
/**
* @inheritdoc
*/
public function attributeLabels()
{
return [
'id' => Yii::t('app', 'ID'),
'nome' => Yii::t('app', 'Nome'),
'texto' => Yii::t('app', 'Texto'),
'fileName' => Yii::t('app', 'File Name'),
'fileType' => Yii::t('app', 'File Type'),
'binaryfile' => Yii::t('app', 'Binaryfile'),
'ativo' => Yii::t('app', 'Ativo'),
];
}
}
Изображения успешно сохраняются в поле таблицы с именем binaryfile
И мне нужно, чтобы отобразить каждый блоб изображение, хранящееся в базе данных в целях названный view2 внутри LISTVIEW или аналогичного виджета
Любой знает, какой блок o f код мне нужно поставить в view2 и HonraController для достижения этого?
EDIT
решаемые
ВОТ КОД, ЧТО РЕШИТЬ ПРОБЛЕМУ ТЕПЕРЬ ВСЕ РАБОТАЕТ ХОРОШО
public function actionCreate()
{
$model = new Honra();
if (Yii::$app->request->isPost) {
$model->file = UploadedFile::getInstance($model, 'file');
$filePath = 'uploadsimg/' . $model->file->baseName . '.' . $model->file->extension;
$model->fileName = $filePath;
$model->save();
$model->file->saveAs('uploadsimg/' . $model->file->baseName . '.' . $model->file->extension);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(Url::toRoute(['create']));
}
}
return $this->render('create', ['model' => $model]);
}
БОЛЬШОЕ СПАСИБО ЗА ПОМОЩЬ MIHAI
Ну, вам нужно сделать еще один звонок к действию в контроллере, который даст вам изображение. То есть для каждого изображения в списке. Вы не можете прямо показать это в списке, я считаю, что html не работает таким образом. Почему вы решили разместить изображения в БД? Это сделает ваш db очень быстрым, вам гораздо лучше создать уникальную ссылку (возможно, с хешем, чтобы люди не угадали путь к другим изображениям) и просто сохранили путь в db. –
Больше мнений о сохранении изображений в db http://stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay –
Я помещал изображения в db, потому что мне нужен список для хранения и показать имя человека, а также показать его фотографию. Фотография как видимая с первого момента, а не ссылка. –