我无法在codeigniter中插入多个带有多个输入的图像,我努力尝试,但无法获取图像。
以下是我的代码。任何人都可以指导我正确的方向吗?
HTML
<input type="file" name="item_img[]">
<input type="file" name="item_img[]">
<input type="file" name="item_img[]">
<input type="file" name="item_img[]">
CONTROLLER
if($this->input->post('save')=='save')
{
$count = count($_FILES['item_img']['size']);
for($i=0; $i<$count; $i++)
{
$config['upload_path'] = './img/items/';
$config['allowed_types']= 'gif|jpg|png';
$this->upload->initialize($config);
$count = count($_FILES['item_img']['size']);
foreach($_FILES as $key=>$value)
$_FILES['userfile']['name']=$value['name'][$i];
$_FILES['userfile']['type'] = $value['type'][$i];
$_FILES['userfile']['tmp_name'] = $value['tmp_name'][$i];
$_FILES['userfile']['error'] = $value['error'][$i];
$_FILES['userfile']['size'] = $value['size'][$i];
$this->load->library('upload', $config);
$this->upload->do_upload();
$data = $this->upload->data();
$names='img/items/'.$data['file_name'];
$insertdata2=array( 'i_img'=>$names, 'createdon'=>date("Y-m-d H:i:s") );
$this->model->insertData('item_info_master',$insertdata2);
}
}
MODEL
public function insertData($table,$data)
{
$this->db->insert($table, $data);
}
答案 0 :(得分:0)
您可以从一个输入中获取所有图像
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
<table class="my_table">
<thead>
<tr>
<th>
First Name
</th>
<th>Last Name</th>
<th>Text</th>
</tr>
</thead>
<tbody>
<tr>
<td>David</td>
<td>Johnman</td>
<td>Here is some text</td>
</tr>
<tr>
<td>Felix</td>
<td>Mann</td>
<td>Cake</td>
</tr>
<tr>
<td>Peter</td>
<td>Pan</td>
<td>Green green grass of home</td>
</tr>
</table>
<br><br>
<table class="my_table">
<thead>
<tr>
<th>
First Name
</th>
<th>Last Name</th>
<th>Text</th>
</tr>
</thead>
<tbody>
<tr>
<td>David</td>
<td>Stone</td>
<td>Here is text</td>
</tr>
<tr>
<td>Trevor</td>
<td>Barry</td>
<td>Cake</td>
</tr>
<tr>
<td>Xylophone</td>
<td>Greet</td>
<td>Green green grass of home</td>
</tr>
</table>
你可以使用$ _FILES
从php中检索它答案 1 :(得分:0)
我看到一些问题。我首先建议您将输入切换为:
<input type="file" name="item_img" multiple="multiple" />
如果你不能这样做,那么你需要在控制器中以不同的方式处理PHP循环以获取这些图像。以下是一个问题/答案, Uploading multiple photos using with same name 。
除了循环外,您还需要在控制器中调整几项内容。对于初学者来说,$_FILES['item_img']['size']
正在获取文件本身的大小(例如:5MB),而不是文件的数量。所以count变量永远不会起作用。
您也没有正确加载上传库和配置。请查看此问题/答案 Upload multiple files in CodeIgniter ,以获取有关如何加载配置,然后处理多个图像的一个很好的示例。
希望这会有所帮助。
答案 2 :(得分:0)
试试这个:
<input type="file" name="gallery[]" multiple>
和php代码:
if(!is_dir("uploads/gallery/".$id."/")) {
mkdir("uploads/gallery/".$id."/");
}
foreach($_FILES['gallery']['name'] as $key=>$val){
//upload and stored images
$target_dir = "uploads/gallery/".$id."/";
$target_file = $target_dir.$_FILES['gallery']['name'][$key];
$type = 'image';
if(move_uploaded_file($_FILES['gallery']['tmp_name'][$key],$target_file)){
$this->model->addGallery($id,$target_file,$type,$thumbnail);
//$images_arr[] = $target_file;
}
}
欢迎光临