CodeIgniter 多张图片上传和调整大小
CodeIgniter multiple image upload and resize
因为我是 PHP 的初学者,所以即使在教程的帮助下我仍然面临困难。
我的代码上传了多张图片,但它只调整了第一张图片的大小,其余图片保持与上传时相同。
我试过 unset 和 clear() 但问题是一样的。
如果有人能帮助我解决这个问题,我将不胜感激。
function do_upload()
{
$files = $_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];
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '2000';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$path=$data['upload_data']['full_path'];
$q['name']=$data['upload_data']['file_name'];
$configi['image_library'] = 'gd2';
$configi['source_image'] = $path;
$configi['maintain_ratio'] = TRUE;
$configi['width'] = 75;
$configi['height'] = 50;
$this->load->library('image_lib', $configi);
$this->image_lib->resize();
$this -> load -> view('upload_success', $q);
unset($configi);
$this->load->library('image_lib');
$this->image_lib->clear(); }}}
我用过的最后 6 行
$this->load->library('image_lib', $configi);
但是当我们使用 $configi 在循环中加载一个库时,它会在循环第一次执行时立即生效。要在循环的每个增量上使用新值,我们应该像这样分别执行它们:
$this->load->library('image_lib');
$this->image_lib->initialize($configi);
并使用这种方式 $configi 在循环中的每个增量都采用新值。
因为我是 PHP 的初学者,所以即使在教程的帮助下我仍然面临困难。 我的代码上传了多张图片,但它只调整了第一张图片的大小,其余图片保持与上传时相同。 我试过 unset 和 clear() 但问题是一样的。 如果有人能帮助我解决这个问题,我将不胜感激。
function do_upload()
{
$files = $_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];
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '2000';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else
{
$data = array('upload_data' => $this->upload->data());
$path=$data['upload_data']['full_path'];
$q['name']=$data['upload_data']['file_name'];
$configi['image_library'] = 'gd2';
$configi['source_image'] = $path;
$configi['maintain_ratio'] = TRUE;
$configi['width'] = 75;
$configi['height'] = 50;
$this->load->library('image_lib', $configi);
$this->image_lib->resize();
$this -> load -> view('upload_success', $q);
unset($configi);
$this->load->library('image_lib');
$this->image_lib->clear(); }}}
我用过的最后 6 行
$this->load->library('image_lib', $configi);
但是当我们使用 $configi 在循环中加载一个库时,它会在循环第一次执行时立即生效。要在循环的每个增量上使用新值,我们应该像这样分别执行它们:
$this->load->library('image_lib');
$this->image_lib->initialize($configi);
并使用这种方式 $configi 在循环中的每个增量都采用新值。