我正在使用codeigniter中的Multiple_upload库进行多次上传,并形成一些创建缩略图的循环,只会在第一次迭代时触发它看起来就像我的代码
function saveContentImages() {
$this->load->model('categoryModel');
if($query = $this->categoryModel->getCategoryByContentId($this->input->post('contentTitle'))){
foreach($query as $k => $v) {
$categoryTitle = strtolower($v['categoryTitle']);
}
}
// we now need to set up the configuration that the upload
// library expects to see.
$config['upload_path'] = 'media/uploads/'.$categoryTitle;
$config['allowed_types'] = 'gif|jpg|jpeg|png';
$config['max_size'] = '1000';
$sonfig['max_width'] = '1024';
$config['max_height'] = '768';
if(!file_exists($config['upload_path'])) {
mkdir($config['upload_path'], 0777);
}
// load in both the libaries that the image upload we will
// we import codeigniters own upload library and also a library
// from the community that allows for multiple uploads with the help
// of jQuery
$this->load->library('upload', $config);
$this->load->library('Multi_upload');
// we can now do the multiple upload
$files = $this->multi_upload->go_upload();
echo $this->upload->display_errors();
if(!$files) {
$this->load->model('categoryModel');
if($query = $this->categoryModel->getCategoryByContentId($this->input->post('contentTitle'))){
foreach($query as $k => $v) {
$categoryTitle = strtolower($v['categoryTitle']);
}
}
} else {
// we now need to do some GD library work so that the content can
// have thumbnail images
foreach ($files as $image) {
$gd['image_library'] = 'gd2';
$gd['source_image'] = $image['file'];
$gd['create_thumb'] = TRUE;
$gd['maintain_ratio'] = TRUE;
$gd['width'] = 63;
$gd['height'] = 48;
$this->load->library('image_lib', $gd);
$resize = $this->image_lib->resize();
echo $resize."<br />";
// this condition gets run if the resize fails
echo $this->image_lib->display_errors();
if(!$resize) {
echo $this->image_lib->display_errors();
}
}
// loop through the $files array and save each image in the array
foreach($files as $image) {
$this->load->model('imageModel');
$query = $this->imageModel->saveContentImages($this->input->post('contentTitle'), $image);
}
$data['formSubmitted'] = "Images";
$this->load->view('admin/successPage', $data);
}
}
这是i print_r
( [0] =&gt;排列 ( [name] =&gt; orange.png [file] =&gt; /Users/Simon/Sites/mysite/media/uploads/blog/orange.png [size] =&gt; 3.07 [ext] =&gt;巴纽 [image_type] =&gt; PNG [height] =&gt; 703 [width] =&gt; 1000 )
[1] => Array
(
[name] => yellow.png
[file] => /Users/Simon/Sites/mysite/media/uploads/blog/yellow.png
[size] => 3.06
[ext] => .png
[image_type] => png
[height] => 703
[width] => 1000
)
[2] => Array
(
[name] => purple.png
[file] => /Users/Simon/Sites/mysite/media/uploads/blog/purple.png
[size] => 3.07
[ext] => .png
[image_type] => png
[height] => 703
[width] => 1000
)
)
有什么理由可以这样做,还是我可以做任何检查?
答案 0 :(得分:2)
CodeIgniter类加载器不会加载类的多个实例,除非为每个实例指定了不同的对象名称。因此,配置选项不会更新,因为image_lib构造函数未运行。您应该在进入循环之前加载该类,然后手动初始化它并在每次循环时清除它。
$gd = array();
$this->load->library('image_lib');
foreach ($files as $image) {
$gd['image_library'] = 'gd2';
$gd['source_image'] = $image['file'];
$gd['create_thumb'] = TRUE;
$gd['maintain_ratio'] = TRUE;
$gd['width'] = 63;
$gd['height'] = 48;
$this->image_lib->initialize($gd);
$resize = $this->image_lib->resize();
$this->image_lib->clear();
}