【问题标题】:Yii file upload $_FILE is emptyYii文件上传$_FILE为空
【发布时间】:2016-11-10 01:51:27
【问题描述】:

我正在尝试通过表单将图像上传到我的模型。我正在使用 Yii 1.1

模型在数据库中不包含“图像”列,所以我在模型中创建了这样的属性

public $image;

我在规则中添加了以下内容

array('image', 'file', 'types'=>'jpg,gif,png', 'allowEmpty'=>true),

在视图中,我在表单中添加了 htmlOption array('enctype' => 'multipart/form-data'),同时用于文件上传:

<th><?php echo $form->labelEx($model, 'image'); ?></th>
<td><?php echo $form->fileField($model, 'image');?></td>
<th><?php echo $form->error($model, 'image');'>'?></th>

我看到了上传图片的按钮,当我按下按钮时,我的控制器的动作被调用,但是如果我为显示 $_POST 和/或 $_FILES 做一个日志,我得到了这个:

来自 $_FILES 的日志

2016/07/07 18:18:12 [info] [application] FILE : 

Array
(
)

我从 $_POST 收到的日志

[Puntointeres] => Array
    (
        [Name] => My Name
        [Description] => What ever
        ......
        [image] => 
    )

有什么帮助吗?

【问题讨论】:

  • 您是否查看了生成的 html 以确保实际设置了 enctype 属性?鉴于您的 image 输入显示在 $_POST 中,要么您没有正确构建表单,要么有什么东西破坏了它。
  • 输入字段应该是$form->field($model, 'image')->fileInput()
  • 嗨,我使用的是 Yii 1.1,所以我没有 $form->field($model, 'image')->fileInput();

标签: php image yii upload


【解决方案1】:

可能你忘记设置enctype了:

<?php $form = ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

另外你的字段不正确,应该是:

$form->field($model, 'image')->fileInput()

还要记住 Yii 不会在 $_POST 中发送图像的值。通过 $_POST 它发送它在使用 inputFile 时生成的隐藏字段。

【讨论】:

  • 嗨,我使用的是 Yii 1.1,所以我没有功能 $form->field($model, 'image')->fileInput();我的表单中还有 'enctype' => 'multipart/form-data' 选项。
【解决方案2】:

问题与序列化字段的 SubmitButtonAjax 有关,并且文件字段已转换为字符串。

【讨论】:

    【解决方案3】:

    您好,您检查了在开发者工具中生成的 html 吗?我有enctype 或没有。 如果没有,请将其添加到您的表单选项中。

    'htmlOptions' => array(
            'enctype' => 'multipart/form-data',
        ),
    

    另外,您必须致电CUploadedFile 以获取上传的文件信息

    使用此链接上传yii.http://www.yiiframework.com/wiki/2/how-to-upload-a-file-using-a-model/中的文件

    关于CUploadedFile的信息文件http://www.yiiframework.com/doc/api/1.1/CUploadedFile

    【讨论】:

    • 嗨,我的表单有 'enctype' => 'multipart/form-data',我知道我必须使用 CUploadedFile 但问题是文件没有到达控制器。似乎是表格问题。当我尝试使用 Postman 将表单信息发送到我的控制器时,我看到了带有图像的 $_FILES。
    猜你喜欢
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-08
    • 2017-05-06
    • 1970-01-01
    • 2020-09-01
    • 2021-09-12
    • 2014-11-04
    相关资源
    最近更新 更多