你好
我需要在Yii2的LISTVIEW或类似小部件中显示存储在BLOB数据库字段中的图像
我有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的表字段中
我需要在LISTVIEW或类似小部件内的名为view2的视图中显示存储在数据库中的每个斑点图像
任何人都知道我需要在view2和HonraController中放入什么代码块才能实现?
编辑
解决了
这是解决问题的代码,现在一切正常
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的帮助
这是Yii2上的官方文档https://github.com/yiisoft/yii2/blob/master/docs/guide/input-file-upload.md非常简单。
一些评论:
1)这些照片可能是私人的,如果有人猜到别人的道路,这可能是一个大问题。在这种情况下,您可以将文件放在Web文件夹中,而不放在其他位置。如果执行此操作,则必须使用资产向它们显示assetManager-> getPublishedUrl('@ app / folder')?> / fav.ico
2)如果图片不太敏感,则可以将其保存在网络文件夹。
如您所见,您上传2次相同的文件名可能会遇到问题,因为1会覆盖其他文件。您可以随时重命名该文件,实际上我会将其代码更改为以下内容
if ($model->file && $model->validate()) {
$model->file = UploadedFile::getInstance($model, 'file');
$filePath = 'uploads/' . hash('ripemd160', microtime()) . $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']));
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句