大家好我想在我的localhost(WAMP)上用codeigniter上传图片但是出现了两个问题:
您必须在首选项中指定源图像。
您的服务器不支持处理此类图像所需的GD功能。
我尝试过什么不修复但没有结果
这是我的代码:
class Upload_mod extends CI_Model{
var $gallery_path;
var $gallery_path_url;
function index(){
parent::__construct();
$this->gallery_path = realpath(APPPATH . '../uploads');
$this->gallery_path_url = base_url().'uploads/';
}
function do_upload() {
$config = array(
'allowed_types' => 'jpg|jpeg|gif|png',
'upload_path' => $this->gallery_path);
$this->load->library('upload');
$this->upload->initialize($config);
$this->upload->do_upload();
$image_data = $this->upload->data();
print_r($image_data);
if ( ! $this->upload->do_upload())
{
$error = array('error' => $this->upload->display_errors());
gd_info();
echo $error;
}
$config['source_image'] = $image_data['full_path'];
$config['new_image'] = $this->gallery_path . '/thumbs';
$config['maintain_ratio'] = TRUE;
$config['width'] = 75;
$config['height'] = 50;
$this->load->library('image_lib');
$this->image_lib->initialize($config);
$this->image_lib->resize();
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
}
}
答案 0 :(得分:1)
我在这里猜测,但我认为问题是你正在调用$this->image_lib->resize()
两次,但第二个配置在你运行第一个之后被清除 - 所以它找不到文件,那就是触发第二个错误。 “这种类型的图像”可能是NULL值或其他东西。你也只是在第二次调用时进行错误检查,所以第一个可能正常工作。
尝试此更改并查看是否有帮助:
$this->load->library('image_lib');
$this->image_lib->initialize($config);
// $this->image_lib->resize(); Remove this call to resize()
if ( ! $this->image_lib->resize())
{
echo $this->image_lib->display_errors();
}
另一种方法可以做到:
$this->load->library('image_lib');
$this->image_lib->initialize($config);
$success = $this->image_lib->resize();
if ( ! $success)
{
echo $this->image_lib->display_errors();
}
无论哪种方式,即使这不是您唯一的问题,您也应该只拨打resize()
一次。
答案 1 :(得分:0)
在php.ini中 你必须改变这一行 upload_max_filesize = 2MB