Php 无法在codeigniter中使用ajax上载图像

Php 无法在codeigniter中使用ajax上载图像,php,ajax,codeigniter,image-upload,Php,Ajax,Codeigniter,Image Upload,我试图上传一个图像到服务器,但每次我得到一个错误,你们并没有选择一个文件上传 我已经在我的视图中创建了一个表单,其中会询问用户详细信息,如果选择了候选选项,则会要求用户选择图像 当我上传图像并使用jQuery获取文件路径时,我得到的是C://fakepath/filename.png,但为此,我还配置了许多有用的东西,只返回文件名 我已经在根文件夹中创建了一个名为upload的目录,但无论是在upload文件夹中还是在服务器上,我都无法上传任何图像 View.php ajax响应 Control

我试图上传一个图像到服务器,但每次我得到一个错误,你们并没有选择一个文件上传

我已经在我的视图中创建了一个表单,其中会询问用户详细信息,如果选择了候选选项,则会要求用户选择图像

当我上传图像并使用jQuery获取文件路径时,我得到的是C://fakepath/filename.png,但为此,我还配置了许多有用的东西,只返回文件名

我已经在根文件夹中创建了一个名为upload的目录,但无论是在upload文件夹中还是在服务器上,我都无法上传任何图像

View.php

ajax响应

Controller.php


在文件的表单标记中需要此项

enctype=多部分/表单数据

ajax中的调用为文件添加以下内容

        cache:false,
        contentType: false,
        processData: false,
并使用formdata,而不是手动执行每个输入

    var formData = new FormData(this);
现在,您的ajax应该是这样的

         var formData = new FormData(this); // this will get all inputs from your form
         $.ajax({
            type:'POST',
            url: '<?php echo base_url(); ?>welcome/add_user_validation',
            data:formData,
            cache:false,
            contentType: false,
            processData: false,
            error: function(data){
                console.log("error");
                console.log(data);
            },
            success:function(data){
                console.log("success");
                console.log(data);
            },
        });

在文件的表单标记中需要此项

enctype=多部分/表单数据

ajax中的调用为文件添加以下内容

        cache:false,
        contentType: false,
        processData: false,
并使用formdata,而不是手动执行每个输入

    var formData = new FormData(this);
现在,您的ajax应该是这样的

         var formData = new FormData(this); // this will get all inputs from your form
         $.ajax({
            type:'POST',
            url: '<?php echo base_url(); ?>welcome/add_user_validation',
            data:formData,
            cache:false,
            contentType: false,
            processData: false,
            error: function(data){
                console.log("error");
                console.log(data);
            },
            success:function(data){
                console.log("success");
                console.log(data);
            },
        });

感谢您的回答,但当我添加新formData时,它不会将控制权转移到ajax,这就是为什么我手动执行此操作,其次,当我将cache、contentType和processType设置为false时,它会开始显示所有字段都是必需的。在controller中,您将使用$_FILES[“标语”]获取文件,而不是IFesset$_POST[“标语”]{我有一个isset函数来检查文件是否被附加。谢谢你的回答,但是当我添加新的formData时,它不会将控制权转移到ajax,这就是为什么我手动执行此操作的原因。其次,当我将cache、contentType和processType设为false时,它会开始显示所有字段都是必需的。在controller中,你会得到file带有$_文件['lamposon'],而不是ifisset$_POST['lamposon']{我有isset函数来检查文件是否已附加