我刚开始编程一两周前,所以我为潜在的可怕代码道歉,但我一直很难搞清楚这一点。
我设法将文件上传到指定目的地,但我无法使调整大小/图像处理工具正常工作。
给我问题的代码是注释掉的部分,我已经确保为文件夹提供适当的权限。任何帮助都会很出色。
我也很好奇我将如何使用绝对路径:
function avatar_update() {
$config['upload_path'] = './avatars/';
$config['allowed_types'] = 'jpg';
$config['max_size'] = '100';
$config['max_width'] = '100';
$config['max_height'] = '100';
$config['file_name'] = time();
$filename = $config['file_name'];
$this->load->library('upload', $config);
if (!$this->upload->do_upload()) {
$error = $this->upload->display_errors();
$this->session->set_flashdata('msg', $error);
$this->load->view('General/header');
$this->load->view('profile_view', $error);
$this->load->view('General/footer');
} else {
// $this->load->library('image_lib');
// $resize['image_library'] = 'gd2';
// $resize['source_image'] = './avatars/'.$filename.'.jpg';
// $resize['maintain_ratio'] = TRUE;
// $resize['create_thumb'] =TRUE;
// $resize['width'] = 50;
// $resize['height'] = 50;
// $this->load->library('image_lib', $resize);
// $this->image_lib->resize();
$username = $this->session->userdata('username');
$avatar = array(
'avatar' => $filename
);
$this->db->where('username', $username);
$this->db->update('users', $avatar);
$this->db->select();
$this->db->where('username', $username);
$query = $this->db->get('users');
if ($query->num_rows() > 0) {
$user_details = $query->row_array();
}
$this->session->set_userdata($user_details);
$this->load->view('General/header');
$this->load->view('profile_view');
$this->load->view('General/footer');
}
}
答案 0 :(得分:1)
您的代码对我来说没问题(除了加载图像库两次!)。尝试将新图像的路径添加到配置数组中。
$resize['new_image'] = '/path/to/new_image.jpg';
你不应该需要它,但它可能值得一试! 另外,根据我的评论,你应该在条件中包装resize()函数,这样你就可以测试并回显任何错误。
PS。当您更习惯CI时,MVC模型会考虑将所有数据库逻辑移动到模型中。