如何使用AJAX发送base50编码的大于50kb的图像?

时间:2019-07-18 05:48:49

标签: php jquery ajax curl base64

我必须将数据发送到API,在API中,所有上传格式的图像都应以base64编码发送。到目前为止,我已经取得了成功,但是只有当我发送的图像大小小于60kb的数据,并且第一次上载大于60kb的文件时,我的表单没有命中ajax调用,当我再次单击时它命中了ajax调用,但是当数据发送到另一个时curl文件,它没有给出curl的任何响应,

这是我制作的将代码发送到API的curl代码

add_action( 'wp_ajax_cms_formsubmit', 'cms_formsubmit' );
add_action( 'wp_ajax_nopriv_cms_formsubmit', 'cms_formsubmit' );


function cms_formsubmit(){
    $data = $_POST + $_FILES;
    $ch   = curl_init();

    curl_setopt_array($ch, array(
        CURLOPT_POST => 1,
        CURLOPT_URL => "https://www.sajaya.ae/himmah/Apicalls/membersignup",
        CURLOPT_RETURNTRANSFER => true,
        CURLINFO_HEADER_OUT => 1,
        CURLOPT_POSTFIELDS => $data
    ));

    $result = curl_exec($ch);
    curl_close ($ch);

    $tt = json_decode($result, true);
    echo $tt['message'];

    return $tt['message'];
}

这是我用来向

发送数据的Ajax代码
jQuery(document).ready(function () {
    jQuery('body').on('click', '#SaveAccount', function (evt) {
        jQuery("#ct-loader").fadeIn();
        evt.preventDefault();
        var data = new FormData(this.form);

        jQuery.ajax({
            url: '<?php echo site_url(); ?>/wp-admin/admin-ajax.php?action=cms_formsubmit',
            type: "POST",
            data: data,
            mimeType: "multipart/form-data",
            contentType: false,
            processData: false,
            cache: false,
            dataType: "html",
            success: function (response) {
                jQuery("#SignupForm").trigger('reset');
                jQuery("#ct-loader").fadeOut();
                jQuery('.req-res').html(response.substring(0, response.length - 1));
                jQuery("html, body").animate({ scrollTop: 0 }, "slow");

                var data = JSON.parse(response);
                jQuery('.req-res').html('')
                jQuery('.req-res').html(data.message)
                jQuery("html, body").animate({ scrollTop: 0 }, "slow");

                setTimeout(function () {
                    jQuery('.req-res').removeClass('alert-danger');
                    jQuery('.req-res').removeClass('alert-success');
                    jQuery('.req-res').html('')
             }, 3000);
         },
         error: function (response) { }
     });
 });

这是我用于图像上传的base64转换功能

function readURL(input) {
    var filename = jQuery('#member_passport_front_copy_names').val().replace(/C:\\fakepath\\/i, '')

    jQuery('#member_passport_copy_front_name').val(filename);

        if (input.files && input.files[0]) {
            var reader = new FileReader();
            reader.onload = function (e) {
                jQuery('#falseinput').attr('src', e.target.result);

                jQuery('#member_passport_copy_front').val(/base64,(.+)/.exec(e.target.result)[1]);
            };
            reader.readAsDataURL(input.files[0]);
        }
    }

为了解决这个问题,我已经做过的事情,

  1. 增加了max_upload_size
  2. 服务器根目录上的web.config文件中的maxJsonLength="50000000000000"增加了
  3. 增加了post_max_size
  4. 增加了max_execution_time

0 个答案:

没有答案