php - Codeignitor 从动态表单上传多个输入文件
问题描述
我有一个使用 Jquery 的动态表单(拖放表单),它有多个输入类型 = 文件。因此,输入类型的名称使用随机数进行更改。以下是查看源代码的示例代码:
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
<form action="" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<div id="sjfb-fields">
<div class="my-3 p-3 bg-white rounded box-shadow">
<div id="sjfb-399480" class="sjfb-field sjfb-images" style="min-height:100px;">
<label for="images-399480" style="color:grey;font-size:12px">Upload the screenshot</label>
<input type="file" name="img-399480" id="images-399480">
</div>
</div>
<div class="my-3 p-3 bg-white rounded box-shadow">
<div id="sjfb-857945" class="sjfb-field sjfb-images" style="min-height:100px;">
<label for="images-857945" style="color:grey;font-size:12px">Test Images</label>
<input type="file" name="img-857945" id="images-857945">
</div>
</div>
<div class="my-3 p-3 bg-white rounded box-shadow">
<div id="sjfb-792565" class="sjfb-field sjfb-images" style="min-height:100px;">
<label for="images-792565" style="color:grey;font-size:12px">More Images</label>
<input type="file" name="img-792565" id="images-792565">
</div>
</div>
</div>
<button type="submit" name="save" class="btn btn-primary">Save</button>
</form>
我在控制器中使用了以下代码来上传一张图片:
$config['upload_path'] = 'public/Uploads/Inspection/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 100;
$config['max_width'] = 1024;
$config['max_height'] = 768;
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload('userfile'))
{
$error = array('error' => $this->upload->display_errors());
}
else
{
$data = array('upload_data' => $this->upload->data());
}
我已经尝试使用一种输入类型 =“文件”进行上传,它可以工作(使用图像的名称用户文件)。这个表单有多个输入类型=文件,我想知道有什么方法可以单独上传文件吗?我也是codeigniter的新手
谢谢!
解决方案
看一下这个 :
控制器部分:
$files = $_FILES; //getting the files from post
$cpt = count($_FILES['photo']['name']); //number of files uploaded
for($i=0;$i<$cpt;$i++){ // in loop to upload multiple files
$file_name=$_FILES['photo']['name'][$i];
if($i==0){ //name the file according to the number /name as u like
echo $i;
$name='_first';
}elseif($i==2){
$name='_second';
}else{
$name='_third';
}
//上传照片的ci库 $this->load->library('upload');
$_FILES['photo']['name']= $files['photo']['name'][$i];
$_FILES['photo']['type']= $files['photo']['type'][$i];
$_FILES['photo']['tmp_name']= $files['photo']['tmp_name'][$i];
$_FILES['photo']['error']= $files['photo']['error'][$i];
$_FILES['photo']['size']= $files['photo']['size'][$i];
$config = array(
'file_name' => $name,
'allowed_types' => 'jpg', //add option as u like
'max_size' => 3000,
'overwrite' => TRUE,
'upload_path'=>'./uploads/' //use your respective path to upload
);
$this->upload->initialize($config);
if (!$this->upload->do_upload('photo')) {
$data_error = array('msg' => $this->upload->display_errors());
} else {
$data = $this->upload->data();
}
}
并在 html 中表单上传照片:输入名称更改为照片 [] 为所有
<?php echo $error;?>
<?php echo form_open_multipart('upload/do_upload');?>
<form action="" enctype="multipart/form-data" method="post" accept-charset="utf-8">
<div id="sjfb-fields">
<div class="my-3 p-3 bg-white rounded box-shadow">
<div id="sjfb-399480" class="sjfb-field sjfb-images" style="min-height:100px;">
<label for="images-399480" style="color:grey;font-size:12px">Upload the screenshot</label>
<input type="file" name="photo[]" id="images-399480">
</div>
</div>
<div class="my-3 p-3 bg-white rounded box-shadow">
<div id="sjfb-857945" class="sjfb-field sjfb-images" style="min-height:100px;">
<label for="images-857945" style="color:grey;font-size:12px">Test Images</label>
<input type="file" name="photo[]" id="images-857945">
</div>
</div>
<div class="my-3 p-3 bg-white rounded box-shadow">
<div id="sjfb-792565" class="sjfb-field sjfb-images" style="min-height:100px;">
<label for="images-792565" style="color:grey;font-size:12px">More Images</label>
<input type="file" name="photo[]" id="images-792565">
</div>
</div>
</div>
<button type="submit" name="save" class="btn btn-primary">Save</button>
</form>
在我的本地工作,请参阅此https://www.codeigniter.com/user_guide/libraries/file_uploading.html以获取配置选项
推荐阅读
- javascript - Hexo 站点生成器 - 使用 PHP 页面的模板
- android - 应用程序无法将音频连接到耳机 Sinch App to App (Android)
- java - 我如何在java中对这个自定义arraylist进行排序,按包装箱数的降序排列
- r - 当尝试在对象列表中保存 R 对象时,R 表示找不到对象
- performance - 为什么我们可以处理父异常时使用多个捕获
- c++ - 有人可以解释在c++中通过指针传递和通过引用传递的目的是什么吗?
- sql - 需要一个 sql 来获取单次预订中支付最高金额的游客
- android - 来自模块的注释依赖不起作用
- reactjs - 如何更改数组中对象中的数组?
- c# - 如何将json对象反序列化为c#