当前位置: 首页 > 知识库问答 >
问题:

yii2 kartik文件文件输入多个

陈琪
2023-03-14

所以我正在和Yii2一起工作,对它来说是相当新的。我正在使用Kartik文件上传,并试图将代码转换为多个文件。但它只保存了第一个文件。

我已经删除了验证,因为这也是失败的,但一旦我知道所有其他的都在工作,我会重新添加。

型号:

/**
    * Process upload of image
    *
    * @return mixed the uploaded image instance
    */
    public function uploadImage() {

        // get the uploaded file instance. for multiple file uploads
        // the following data will return an array (you may need to use
        // getInstances method)
         $image = UploadedFile::getInstances($this, 'image');

         foreach ($image as $images) {

        // if no image was uploaded abort the upload
        if (empty($images)) {

            return false;
        }
        // store the source file name
        $this->image_src_filename = $images->name;
        $extvar = (explode(".", $images->name));
        $ext = end($extvar);


        // generate a unique file name
        $this->image_web_filename = Yii::$app->security->generateRandomString().".{$ext}";

        // the uploaded image instance

        return $images;


} }

控制器:

/**
     * Creates a new PhotoPhotos model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     * @return mixed
     */
    public function actionCreate()
    {
        $model = new PhotoPhotos();

        if ($model->load(Yii::$app->request->post())) {

            // process uploaded image file instance
            $images = $model->uploadImage();



         if ($model->save(false)) {

            // upload only if valid uploaded file instance found
                if ($images !== false) {

                    $path = $model->getImageFile();
                    $images->saveAs($path);

                }

            return $this->redirect(['view', 'id' => $model->ID]);
        } else {
            //error in saving

        }

    }
            return $this->render('create', [
                'model' => $model,
            ]);
    }

查看:

//uncomment for multiple file upload
echo $form->field($model, 'image[]')->widget(FileInput::classname(), [
    'options'=>['accept'=>'image/*', 'multiple'=>true],
]);

共有1个答案

毋城
2023-03-14

我看到了一个问题,那就是你在

foreach ($image as $images)

应该是哪一个

foreach ($images as $image)

干杯

 类似资料:
  • 在单个 Step 中处理多个输入文件是很常见的需求。如果这些文件都有相同的格式, 则可以使用 MultiResourceItemReader 来进行处理(支持 XML/或 纯文本文件)。 假如某个目录下有如下3个文件: file-1.txt file-2.txt ignored.txt file-1.txt 和 file-2.txt 具有相同的格式, 根据业务需求需要一起处理. 可以通过 Muli

  • 目录表 文件 使用文件 储存器 储存与取储存 概括 在很多时候,你会想要让你的程序与用户(可能是你自己)交互。你会从用户那里得到输入,然后打印一些结果。我们可以分别使用raw_input和print语句来完成这些功能。对于输出,你也可以使用多种多样的str(字符串)类。例如,你能够使用rjust方法来得到一个按一定宽度右对齐的字符串。利用help(str)获得更多详情。 另一个常用的输入/输出类型

  • 我试图使用在表单中加载多个文件。 我使用我的表将文件名和其他字段保存在数据库中,并将文件保存在我的文件系统中。我通常把和通过表链接起来。 我成功地保存了多个文件,但当我加载特定

  • 当使用外部JavaScript库或新的宿主API时,你需要一个声明文件(.d.ts)定义程序库的shape。 这个手册包含了写.d.ts文件的高级概念,并带有一些例子,告诉你怎么去写一个声明文件。 指导与说明 流程 最好从程序库的文档开始写.d.ts文件,而不是代码。 这样保证不会被具体实现所干扰,而且相比于JS代码更易读。 下面的例子会假设你正在参照文档写声明文件。 命名空间 当定义接口(例如:

  • 为了从文件获取数据,必须创建一个从文件到程序的流对象。这点我们可以利用ifstream的构造函数实现: ifstream infile ("file-name"); 该构造函数的参数是一个字符串,即你要打开的文件的名字。其结果是创建了infile对象,它支持所有 cin上可以执行的操作,包括>>和getline。 int x; apstring line; infile >> x; // 读取一

  • 我想上传多输入文件。我尝试了下面的代码,但文件没有上传,我无法获得上传目录。 HTML 控制器 我也尝试用下面的代码获取上传的数据,但为什么总是出现错误?