Ajax发送多个base64镜像

时间:2016-10-02 15:51:45

标签: javascript php ajax image base64

我通过ajax请求发送多个图像。但是发送多个图像存在问题,因为它是内存。

当我尝试json_decode此对象 thumbnailArray 时。我得到了这个

  

致命错误:允许的内存大小为134217728字节耗尽(尝试过   分配1048655字节)

thumbnailArray = {
    image1 : {
        image : base64,
        rotate : 0,
        order : 1
    },
    image2 : {
        image : base64,
        rotate : 0,
        order : 2
    }
}

我在对象中发送base64图像,其中包含图像旋转和顺序等值。 这是代码:

    var formData = new FormData( $(this)[0] );
    formData.append('ab-user-image', JSON.stringify(thumbnailArray));

    $.ajax({
        url : baseUrl+'user/ajax_user_add/',
        type : 'POST',
        data : formData,
        async : true,
        cache : false,
        contentType : false,
        processData : false,
        success : function(data) {
            //success
        }
    });

是否有更好的方法来发送base64图像或改进此代码?

2 个答案:

答案 0 :(得分:0)

你必须增加php.ini中的限制:

的upload_max_filesize 的post_max_size

或重新创建ajax函数,为每个图像进行1次调用

您可以使用以下内容重新创建ajax函数:

var formData

 = new FormData( $(this)[0] );
    formData.append('ab-user-image', JSON.stringify(thumbnailArray));

    $(formData).each().ajax({
        url : baseUrl+'user/ajax_user_add/',
        type : 'POST',
        data : this,
        async : true,
        cache : false,
        contentType : false,
        processData : false,
        success : function(data) {
            //success
        }
    });

答案 1 :(得分:0)

我用这个

做到了
var picReader = new FileReader();
picReader.onload = function(event){
    $('.ab-image-upload .ab-image-uploaded').append(createContainerThumbnail(event.target.result, j));
    thumbnailArray['ab-user-image'+j] = {
         image: event.target.result,
         rotate: 0,
         order: 0
    };
    j++;
};
picReader.readAsDataURL(file);
if(formData) {
    formData.append('images[]', file);
}

我直接在 FileReader 中附加 formData 文件。而不是通过ajax发送