javascript - CodeIgniter ajax 上传图片(ajax 有效,而不是 CodeIgniter)

标签 javascript php jquery ajax codeigniter

我知道如何以传统方式通过 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'](这就是您出现错误的原因)。

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

关于javascript - CodeIgniter ajax 上传图片(ajax 有效,而不是 CodeIgniter),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24763068/

相关文章:

javascript - 验证 Google 表单中的电子邮件

javascript - 'infinite' 模式下的 Backbone.Paginator 在 model.destroy 上抛出 'Maximum call stack size exceeded'

php - 将 "1 hour and 10 minutes"转换为 01 :10:00 in php

javascript - 在 jQuery 中通过 AJAX 提交表单

javascript - 使用 get() 加载页面之前加载图像

javascript - RequireJS 未定义模块

Javascript 对象构造函数未注册参数

php - 使用 PHP 和 IFrame 在本地覆盖网页样式

php - 具有模块化结构的 Zend Framework + Doctrine 2

javascript - 在 HTML5 视频播放时执行功能