我通过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图像或改进此代码?
答案 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发送