You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过jQuery将Input File的图片文件传输至PHP后端?

问题:通过jQuery的$.ajax()传输input file图片失败的解决方法

我尝试通过jQuery的$.ajax()方法,将HTML页面中<input type="file">元素获取到的图片传输至UserAjax.php,但仅能获取到图片名称的字符串。尝试直接传输File对象时出现TypeError: Illegal invocation错误;尝试使用this.files[0].val()时,提示该方法不存在。希望实现图片本身或其Base64编码的传输以进行后续处理。

最初的JS代码

$(document).on('change' , '#defined_avatar_file' , function(){
    filename = this.files[0];
    // console.log(this.files[0]);
    // console.log(this.files[0].val());
    var datas = {
        file_avatar : filename,
        // file : this.files[0],
    }

    $.ajax({
        url : 'index.php?action=modify-avatar-file',
        type : 'POST',
        data : datas,
        success : function(){

        }
    })
});

解决方案

感谢ADyson的帮助,以下是可行的解决方案:

修改后的JS代码

$(document).on('change' , '#defined_avatar_file' , function(){
    var formData = new FormData();
    formData.append('file', $('#defined_avatar_file')[0].files[0]);
    $.ajax({
       url : 'index.php?action=modify-avatar-file',
       type : 'POST',
       data : formData,
       processData: false,  // 告诉jQuery不要处理数据
       contentType: false,  // 告诉jQuery不要设置contentType
       success : function(data) {
           console.log(data);
       }
    });
});

PHP端接收方式

该代码通过FormData对象传输文件,PHP端可通过$_FILES全局数组接收,示例代码如下:

var_dump($_FILES['file']['name']);
var_dump($_FILES['file']['size']);
// 其他文件相关操作...

内容的提问来源于stack exchange,提问作者JoKa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 09:10:17