[英]Saving multiple images in yii2
我想在數據庫中保存多個圖像(最多5張),該怎么辦? 要保存圖像,請輸入以下內容:
?= $form->field($Form, 'images[]')->fileInput(['multiple' => true, 'accept' => 'image/*','id'=>'gallery-photo-add'])->label(false) ?>
在我的模型中,我有現場圖像和必須保存的5張圖像的現場。 但是,當我嘗試獲取這樣的圖像時:
$Form->image1 = $this->images[0];
這個在我的數據庫中是空的。 也許問題在於,大量存儲在$ _FILES中? 我的要求是什么:
$_FILES
Name Value
Form [
'name' => [
'images' => [
0 => 'weight.png'
]
]
'type' => [
'images' => [
0 => 'image/png'
]
]
'tmp_name' => [
'images' => [
0 => 'W:\\XAMPP\\tmp\\php3FD3.tmp'
]
]
'error' => [
'images' => [
0 => 0
]
]
'size' => [
'images' => [
0 => 500
]
]
]
要保存多個圖像,您應該使用Yii2的UploadedFile類。 例如,您要在數據庫中保存多個圖像。 控制器的代碼類似於:
namespace app\controllers;
use Yii;
use yii\web\Controller;
use app\models\UploadForm;
use yii\web\UploadedFile;
class SiteController extends Controller
{
public function actionUpload()
{
$model = new UploadForm();
if (Yii::$app->request->isPost) {
$model->imageFiles = UploadedFile::getInstances($model, 'imageFiles');
if ($model->upload()) {
// file is uploaded successfully
return;
}
}
return $this->render('upload', ['model' => $model]);
}
}
這是模型:
namespace app\models;
use yii\base\Model;
use yii\web\UploadedFile;
class UploadForm extends Model
{
/**
* @var UploadedFile[]
*/
public $imageFiles;
public function rules()
{
return [
[['imageFiles'], 'file', 'skipOnEmpty' => false, 'extensions' => 'png, jpg', 'maxFiles' => 4],
];
}
public function upload()
{
if ($this->validate()) {
foreach ($this->imageFiles as $file) {
$file->saveAs('uploads/' . $file->baseName . '.' . $file->extension);
}
return true;
} else {
return false;
}
}
}
在上傳功能中,您可以將圖像保存到數據庫中或將其保存在文件夾中,然后將圖像的路徑寫入表中相應字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.