无法使用Codeigniter上传文件

时间:2011-02-19 19:08:48

标签: codeigniter

我有一个完美的表单 - 但它没有将文件传递给控制器​​

<?php
    $this->load->helper('form');

    //open form
        $attributes = array('class' => 'contact_form');
        echo form_open_multipart('admin/add_record', $attributes);
        echo form_hidden('current_area', $current_area);

        echo form_fieldset('Dati da inserire', array('class' => 'form_fieldset'));
            echo "<p>";
            echo form_label('Titolo:', 'title', array('class' => 'form_label'));
                echo form_input('title', '', "class='form_textfield'");
            echo "</p>";
        echo form_fieldset_close();

        echo form_fieldset('Immagine', array('class' => 'form_fieldset'));
            echo '<p>';
                echo form_label('Immagine:', 'image', array('class' => 'form_label'));
                    echo form_upload('image', '', "class='form_filefield'");
            echo '</p>';
        echo form_fieldset_close(); 

        echo form_fieldset('Testo', array('class' => 'form_fieldset'));
            echo form_label('', 'description', array('class' => 'form_label'));
                echo form_textarea('description', '', array('class' => 'form_textarea', 'cols'  => 45, 'rows'  => 10));
        echo form_fieldset_close();

            //display submit button
            echo "<p>";
                echo form_submit(array('class' => 'form_submit', 'name' => 'submit'), "Inserisci!");
            echo "</p>";

        echo form_close();

?>

如果我在接收端转储$ _POST变量,我会看到所有这些变量排除该文件(变量名为上图)。

事情是,如果我改变

echo form_upload('image', '', "class='form_filefield'");

echo form_input('image', '', "class='form_filefield'");

它起作用,'image'变量像其他任何变量一样被转储。

有什么想法吗?

感谢, 帕特里克

编辑:

它似乎是某种错误,因为我简化了表单和控制器,它仍然不起作用:

查看:

<?php $this->load->helper('form', 'url'); ?>

<?php echo form_open_multipart('admin/add_record2');

echo form_upload('userfile', 'userfile');
?>



<br /><br />

<input type="submit" value="upload" />

</form>

控制器:

function add_record2()
{
    //prints content of entire POST variable
echo '<pre>'; print_r($_POST);echo '</pre>';
}

OUTPUT:一个空数组......

Array
(
)

新编辑 我成功地让它发挥作用。需要做两件事: a)将目标目录的权限设置为777 b)以UNIX格式键入目标目录(我在本地计算机上,所以/users/patrick/sites/....../uploads而不是localhost / site / img / uploads。我仍然不确定为什么这样,我需要记得在我将网站上传到webhost时更改此内容。

1 个答案:

答案 0 :(得分:1)

我认为您应该使用$_FILES代替($HTTP_POST_FILES如果您使用的是PHP&lt; 4.1.0版本。)

如果仍然无效,请检查php.ini中的MAX_FILE_SIZE设置,并确保设置得不太低。