我有一个完美的表单 - 但它没有将文件传递给控制器
<?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时更改此内容。
答案 0 :(得分:1)
我认为您应该使用$_FILES
代替($HTTP_POST_FILES
如果您使用的是PHP&lt; 4.1.0版本。)
如果仍然无效,请检查php.ini中的MAX_FILE_SIZE
设置,并确保设置得不太低。