【问题标题】:uploading multiple images using yii2 and kartik fileInput extension使用 yii2 和 kartik fileInput 扩展上传多张图片
【发布时间】:2016-05-04 16:51:05
【问题描述】:

我在使用 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 dump 我得到的文件,但问题是只有一个文件而不是我上传的所有文件

查看:

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
            ],
        ]);

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

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

谢谢

【问题讨论】:

  • 也显示您的表单代码!!

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


【解决方案1】:

从此小部件中删除 '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]
]);

【讨论】:

  • 他写道:“...只有一个文件不是我上传的所有文件”。这意味着,enctype="multipart/form-data" 存在于 <form>
  • 感谢@muhammadShahzad 的回答,我做了上传部分,但我现在面临另一个问题。因为在我的应用程序中,我必须使用表单中提交的数据保存文件的名称,但上传部分在提交之前完成,所以我怎样才能获取我上传的文件的名称,以便我可以将其传递给控制器​​以保存它们与提交的数据
  • 上传部分你是怎么做的?
【解决方案2】:

谢谢大家,我想出了解决问题的方法,我在提交表单时尝试上传图片,但结果证明我错了,所以我使用小部件使用 ajax 上传图片,如下所示: http://webtips.krajee.com/ajax-based-file-uploads-using-fileinput-plugin/

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多