在 PHP 中使用 Ajax 提交图像文件

Posted

技术标签:

【中文标题】在 PHP 中使用 Ajax 提交图像文件【英文标题】:Submitting image files with Ajax in PHP 【发布时间】:2015-10-08 02:22:56 【问题描述】:

我对 Ajax 和 php 非常陌生。我使用下面的代码通过 Ajax 提交我的 html 表单,但图像文件没有通过。我尝试在代码中添加 contentType 仍然没有运气。请帮助我可以使用相同的代码(带有调整)来提交图像文件以及文本输入吗?

代码如下:

$(document).ready(function() 
    $("#submit_form").submit(function()        
        $.ajax(
            type: "POST",
            url: 'inc/submit_form.php',
            data:$("#submit_form").serialize(),
            success: function (data)   
                // Inserting html into the result div on success
                $('#form-result').html(data);
            ,
            error: function(jqXHR, text, error)
            // Displaying if there are any errors
                $('#form-result').html(error);           
        
    );
        return false;
    );
);

【问题讨论】:

序列化表单只编译值,它不会包含文件使用google学习如何使用ajax进行上传 这个question has already been answered 你可以在这里找到更好的方法***.com/questions/4856917/… @CallumBarclay:这个答案属于 2010 年 @charlietfl:感谢您的回答,我想知道对相同代码的任何修改是否可以让我通过表单推送我的文件。 【参考方案1】:

这只是脚本的 AJAX 部分,但这是我过去使用的。我已经评论了每一行以获得解释:

<script type="text/javascript">

var files = $('#TARGET_TO_FILES_INPUT').prop('files');

var data = new FormData();

$.each(files, function(key,val)
    data.append(key,val);
);


$.ajax(
    type:"POST",// post method
    url:UPLOAD_FILE,// path to file upload
    data:data,// image and any other form data
    cache:false,// stop any caching of browser
    dataType:'json',// return json when complete
    processData:false,// stop preprocessing of data by jquery (ie querystring)
    contentType:false,// must be set to false; turns off default "application/x-www-form-urlencoded; charset=UTF-8"
    success:function(o)
        // successful upload stuff goes here
    ,
    xhr:function()
        var xhr = $.ajaxSettings.xhr() ;

        xhr.upload.onprogress = function(evt) 
            //progress bar stuff goes here
        
        xhr.upload.onload = function()
            //just before upload stuff goes here
        

        return xhr ;
    
);

</script>

【讨论】:

以上是关于在 PHP 中使用 Ajax 提交图像文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery、ajax 和 php 在数据库中保存图像文件 (BLOB)

通过 Ajax 将裁剪的图像数据发送到 PHP

将裁剪的图像发送到数据库 ajax 在客户端和服务器上的 PHP

如何使用 Ajax 将图像发送到 PHP 文件?

通过 jQuery + Ajax 将带有 Google reCaptcha v2 令牌的图像文件发送到 PHP

使用 phonegap 提交数据和图像的表单