socket.io传输base64图片提示的异常

Creator 版本号:1.4.2
运行时目标平台:iOS
操作系统:mac
具体报错信息:
/…/build/jsb-binary/src/project.js:2:RangeError: arguments array passed to Function.prototype.apply is too large

base64编码从相册截取的图片,250*250的大小,选择的是相册里自己拍的照片截取的图片,图片编码后,由socket.io传输到node服务器,提示以上错误,不知道是creator本身的限制提示的错误还是socket.io提示的,那要多少的数据量以下才能不报错?

另如果使用手机屏幕截屏的图片来做为原图进行截图,可以传输到服务器上。

把你的代码发一下吧,理论上可以不用 function.apply

	//读取图片的数据,格式为Uint8Array
	var data = jsb.fileUtils.getDataFromFile(G.selectImage);

	//将Uint8Array转换为base64
	var b64encoded = G.base64_encode(String.fromCharCode.apply(null, data));

	members[i].imgCode = b64encoded;
	G.currentUserSocket.emit('save_t_member', members[i]);

才看到。。。

String.fromCharCode.apply(null, data)

这句代码将 data 作为数组展开传递给 fromCharCode 作为函数参数。。。data 又刚好是 ArrayBuffer,展开巨大,所以报着个错误。你这个需求应该用 call,不应该用 apply,具体两者的区别请 google