node的FS直接读取了图片的源,我通过websocket传送到浏览器之后就蒙了,utf-8的数据,没办法还原到浏览器显示出来,请问各位大大有什么好办法没有 关于写入到缓冲区转成base64也是一样 这种方式只适合小文件 大文件明显不合适 如果用get 就还要开一个单独的http 不合算
你 toString 做甚…
socket.io 支持 binary data, emit buffer, 浏览器收到的是 ArrayBuffer, 转成 Uint8Array, 转成base64,不谢
大文件…
自己做下分块, 例如 emit file-foo-data, data, 对重复取data, 然后在客户端进行拼接, 最后 emit file-foo-end, 处理拼接结果 ArrayBuffer 的话直接 concat 就好…
嗯, 一点想法, 不知道 socket.io 的包有木有顺序, 你自己可能需要进行编号什么的, 最后做下 sort, 处理
@magicdawn 额,其实 我想说的是,base64的数据在填充进DOM的一瞬间,浏览器会卡,因为一个常规的图片,数据集太大了,我也不明白,但是填充进去的一瞬间浏览器有一个性能的急剧下降,很严重
@xivistudio 哦…那样为毛不直接甩一个 url, 让浏览器慢慢下载
我也看到toString了 From Noder
@magicdawn 我现在直接发送了, 到了浏览器就是这样 socket通道,问题来了,怎么显示出来,就是挂载在一个img dom节点上显示出来
var base64String = btoa(String.fromCharCode.apply(null, new Uint8Array(arrayBuffer)));
src="data: image/jpeg; base64, xxxxxx"
http://www.zhangxinxu.com/wordpress/2012/04/base64-url-image-图片-页面性能优化/
@magicdawn 一个1-2m左右的图片,要同时写入大概8张,如果是base64,那么问题来了,浏览器会爆炸吗?我已经抛弃了socket传送图片了,直接get; base64图片编码根本不适合大文件,一个1-2m的图片,如果打印到控制台,里面的编码能直接冲垮浏览器