簡體   English   中英

在yii2中保存多個圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM