我制作了一个上传脚本来上传多张图片。这很好用,但我想将文件名添加到数据库中。
我的问题是只有上传的最后一张图片被添加到数据库中。 这是因为我不知道如何从控制器将数据数组传递给模型。
我上传的代码就像这样(控制器):
public function aanbiedingenadd() //functie om ze toe te voegen aan de database
{
$files = $_FILES;
echo '<pre>';
print_r($files);
$cpt = count($_FILES['userfile']['name']);
for($i=0; $i<$cpt; $i++)
{
$_FILES['userfile']['name']= $files['userfile']['name'][$i];
$_FILES['userfile']['type']= $files['userfile']['type'][$i];
$_FILES['userfile']['tmp_name']= $files['userfile']['tmp_name'][$i];
$_FILES['userfile']['error']= $files['userfile']['error'][$i];
$_FILES['userfile']['size']= $files['userfile']['size'][$i];
$this->upload->initialize($this->set_upload_options());
$this->upload->do_upload();
$image_data = $this->upload->data();
}
print_r($image_data);
print_r($this->upload->display_errors());
$this->aanbieding_model->addaanbieding($image_data);
redirect("members/aanbiedingen");
}
print_r($files)
向我显示所有上传的文件及其大小,宽度,高度等。
print_r($image_data);
仅显示上传的上一张图片。
我的模型看起来像这样:
$insert_data = array(
'fotonaam' => $image_data['file_name']
);
print_r($insert_data);
die;
$input = $this->input->post('userfile');
if(isset($input)){
$this->db->insert('fotoaanbiedingen', $insert_data);
}else{
return FALSE;
}
print_r($insert_data);
告诉我
Array
(
[fotonaam] => 'nameoflastuploadedimage'
)
如何在数组中添加它并逐个添加?
答案 0 :(得分:1)
将这些行放在for loop
:
$this->aanbieding_model->addaanbieding($image_data);
答案 1 :(得分:0)
在你的for循环中移动$this->aanbieding_model->addaanbieding($image_data);
,基本上就是这样。
如果您上传了大量图片,您可能应该使用数组来收集所有图片数据,然后在模型中使用insert_batch()。
e.g。在你的控制器中:
$images = array();
$files = $_FILES;
$cpt = count($_FILES['userfile']['name']);
for($i=0; $i<$cpt; $i++)
{
// your upload routine here
$images[] = $this->upload->data();
}
$this->aanbieding_model->addaanbieding($images);
在您的模型中,您使用的是$this->db->insert_batch('fotoaanbiedingen', $insert_data);
,而不仅仅是插入。
希望有所帮助!
答案 2 :(得分:0)
请制作如下函数: -
public function fileUpload(&$uploadFileData,$field)
{
$config1['allowed_types'] = 'gif|jpg|jpeg|png';
$config1['upload_path'] = ABSOLUTEPATH.'category/original/';
$config1['optional'] = true;
$config1['max_size'] = '0';
$config1['max_width'] = '00';
$this->load->library('upload', $config1);
if (!$this->upload->do_upload($field,true))
{
$error = array('error' => $this->upload->display_errors());
$r = $error;
}
else
{
$data = array('upload_data' => $this->upload->data());
$r = "sucess";
}
$uploadFileData[$field] = $this->upload->file_name;
return $r;
}
并称之为: -
$field = 'userfile';
$uploadFileData = array();
$uploadFileData[$field.'_err'] = '';
$isUploaded = $this->fileUpload($uploadFileData,$field);
if($isUploaded != "sucess")
{
echo "error";
}
else
{
$imagename = $uploadFileData[$field];
}