我一直在使用CodeIgniter框架处理Web应用程序,但上传图片时遇到问题。我在网上找到的所有示例通常只显示只有一个文件输入的表单(例如,http://codeigniter.com/user_guide/libraries/file_uploading.html)。
示例中显示的视图通常如下所示:
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
<input type="file" name="userfile" size="20">
<input type="submit" value="upload">
</form>
但我正在尝试做更像这样的事情:
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
<input type="file" name="userfile" size="20">
<input type="text" name="file_title">
<input type="submit" value="upload">
</form>
我是否需要创建两个单独的表单来完成此操作(一个用于图像上载,一个用于文本输入)?或者是否可以在控制器中编写一个可以同时验证和处理上传和文本输入的功能?
您可以指点我的任何资源? 万分感谢!
答案 0 :(得分:1)
您将从$ _POST数组获取输入,并从$ _FILES数组获取文件。没有任何东西可以阻止你在同一个表格上做这两件事。
话虽如此,您将不得不以不同方式处理错误,因为上传错误不会显示验证错误。我过去所做的是组合上传错误,验证错误和我自己的应用程序错误(即未经授权)使用相同的视图,因此它们都显示在同一个地方,即使它们是由不同的类生成的。
答案 1 :(得分:-2)
可以使用以下代码段,它结合了处理上传数据的各个方面:
if(!empty($this->input->post())){
if(!empty($_FILES['userfile']['name'])){
$config = array(
'upload_path' => "./uploads/food",
'allowed_types' => "gif|jpg|png|jpeg",
'overwrite'=>false
);
$this->load->library('upload', $config);
$this->upload->initialize($config);
if($this->upload->do_upload('userfile')){
$uploadData = $this->upload->data();
$picture = $uploadData['file_name'];
}else{
$picture = '';
}
}else{
$picture = '';
}
'file_title' => $this->input->post('file_title'),
}