使用yii2和kartik fileInput扩展名上传多个图像

时间:2016-05-04 16:51:05

标签: php yii2 image-uploading yii2-advanced-app

使用yii2和Kartik fileInput扩展名上传多个图像时遇到这个小问题。

这是模型:

 public $file;

public static function tableName()
{
    return 'news';
}

public function rules()
{
    return [
        [['news_desc', 'news_context', 'news_first_source', 'news_second_source', 'news_third_source', 'news_responsibe_party', 'news_first_testimony', 'news_second_testimony', 'news_body', 'news_lang'], 'string'],
        [['news_gov_id', 'news_typ_id', 'news_is_in_slider', 'news_is_act', 'news_is_del'], 'integer'],
        [['news_happened_date', 'news_created_date', 'file'], 'safe'],
        [['news_typ_id', 'news_lang'], 'required'],
        [['news_title'], 'string', 'max' => 255],
        [['file'], 'file','maxFiles' => 6],
    ];
}

你可以注意到我正在使用maxFiles,但它对我没有用

控制器:

public function actionCreate_news()
{

    $model = new News();

    if ($model->load(Yii::$app->request->post())) {
        $model->file = UploadedFile::getInstances($model, 'file');

        var_dump($model->file);
        die();}}

现在我只是var转储我得到的文件,但问题是只有一个文件而不是我上传的所有文件

视图:

echo FileInput::widget([
            'model' => $model,
            'attribute' => 'file[]',
            'name' => 'file[]',
            'options' => [
                'multiple' => 'true',
                'accept' => 'image/*'
            ],
            'pluginOptions' => [
                'showCaption' => false,
                'showRemove' => false,
                'showUpload' => false,
                'allowedFileExtensions' => ['jpg','jpeg','png'],
                'overwriteInitial' => false
            ],
        ]);

我已经阅读了有关此问题的所有内容并尝试了所有可能的解决方案,但问题仍然存在

当我按表单提交时,只会提交最后一个文件

感谢

2 个答案:

答案 0 :(得分:0)

从此小部件中删除'name' => 'file[]',,也可以从true中单引号。

echo FileInput::widget([
            'model' => $model,
            'attribute' => 'file[]',
            'options' => [
                'multiple' => true,
                'accept' => 'image/*'
            ],
            'pluginOptions' => [
                'showCaption' => false,
                'showRemove' => false,
                'showUpload' => false,
                'allowedFileExtensions' => ['jpg','jpeg','png'],
                'overwriteInitial' => false
            ],
        ]);

原件:

echo FileInput::widget([
    'model' => $model,
    'attribute' => 'attachment_1[]',
    'options' => ['multiple' => true]
]);

答案 1 :(得分:0)

谢谢大家,我想出了我的问题的解决方案,我在提交表单时尝试上传图片,但它转向我错了,所以我使用小部件上传图像使用像这里的ajax: http://webtips.krajee.com/ajax-based-file-uploads-using-fileinput-plugin/

然后使用插件事件,当表单提交时,我将文件名保存在数据库中