CodeIgniter ajax上传图像(ajax工作,而不是CodeIgniter)

CodeIgniter ajax upload image (ajax works, not CodeIgniter)

本文关键字:CodeIgniter ajax 图像 工作      更新时间:2023-09-26

我知道如何以传统的方式通过ajax上传图像。但是,使用CodeIgniter的library upload,我无法弄清楚。

但首先,让我告诉你,我根本没有使用形式。

if(!empty($_FILES)){
    $this->load->helper('global_helper');
    $config['upload_path']   = base_url() + "public/images/";
    $config['file_name']     = randomName();
    $config['allowed_types'] = "jpg|png|bmp";
    $config['max_size']   = '500';
    $config['overwrite']      = FALSE;
    $this->load->library('upload', $config);
    if(!$this->upload->do_upload()){
        $error = array('error' => $this->upload->display_errors());
        print_r($error);
    }
}

这不起作用,因为我收到以下错误:

Array
(
    [error] => <p>You did not select a file to upload.</p>
)

但我实际上做了,它实际上上传到服务器,因为如果我打印出$_FILES,我收到:

Array
(
    [0] => Array
        (
            [name] => no_image.png
            [type] => image/png
            [tmp_name] => C:'xampp'tmp'php1715.tmp
            [error] => 0
            [size] => 6361
        )
)

可能是输入在数组中的问题(数组[0])?

javascript代码如下:

event.stopPropagation();
event.preventDefault();
var data = new FormData();
if(picture != undefined){ 
    $.each(picture, function (key, value) {
        data.append(key, value);
    });
}
$.ajax({
    url: 'ajax_add',
    type: 'POST',
    data: data,
    cache: false,
    processData: false,  
    contentType: false, 
    success: function(aux){
        console.log(aux);
    }
});

我不想用传统的方式,但是如果我有太多……

谢谢。

不确定它是否可以工作,因为文件上传类被设计为与表单一起使用,但是您可以尝试这个

$this->upload->do_upload(0);

如果它按照我想的做,它将选择$_FILES数组的第一项。默认情况下,它试图找到$_FILES['userfile'],它在这里不存在(这就是为什么会出现错误)。

试一试,我们会看到它是否有效:)