我必须将数据发送到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]);
}
}
为了解决这个问题,我已经做过的事情,
max_upload_size
maxJsonLength="50000000000000"
增加了post_max_size
max_execution_time