我使用下面的代码来处理图片上传。一切都很顺利。我允许选项上传两张图片,一张是徽标,另一张是截图。
现在,当我提供编辑上传的选项时,比如选择要上传的新文件并替换旧文件,我遇到了这个问题。
在我的images[]
数组中,我将在循环的帮助下逐个获取图像名称。但是,当用户想要更改第二个图像(屏幕截图)并在徽标字段中不选择任何内容时,只应更改屏幕截图。
但是在images[]
数组中,第一个元素将是上传的第一个元素。如果我选择了两个图像就可以了,我会在images[0]
中获取logo.jpg,在images[1]
中获取screenshot.jpg。但是当我只选择第二张图像时,我会在images[0]
中获得screenshot.jpg。但是,数组的第一个元素应为空白,并且数组的第二个元素应具有第二个图像上载选项的数据,以使更改生效。我怎么能实现这一点?
$config['upload_path'] = '../uploads/';
$config['allowed_types'] = '*';
$config['max_size'] = '0';
$config['max_width'] = '0';
$config['max_height'] = '0';
$this->load->library('upload', $config);
$image = array();
foreach ($_FILES as $key => $value) {
if (!empty($value['tmp_name'])) {
if ( ! $this->upload->do_upload($key)) {
$error = array('error' => $this->upload->display_errors());
//failed display the errors
} else {
//success
$data = $this->upload->data();
$image[]= $data['file_name'];
}
}
}
答案 0 :(得分:3)
请记住,您必须在每次上传时初始化上传库。
$this->load->library('upload');
$this->upload->initialize($config);
用户指南:http://ellislab.com/codeigniter/user-guide/libraries/file_uploading.html
修改强>
您可以检查$ _FILES数组并检查是否有截屏输入的名称和徽标输入,如果不存在,则可以创建所需的数组
我发现了这个:
创建该数据结构的一种更简单的方法是命名您的HTML文件输入不同的名称。 >如果要上传多个文件,请使用:
<input type=file name=file1>
<input type=file name=file2>
<input type=file name=file3>
每个字段名称都是$ _FILES数组中的键。
http://www.php.net/manual/es/features.file-upload.multiple.php#53933