[问题] 如何知道刚写入的jpg档有无毁损

楼主: hn12404988 (Willy)   2016-06-08 17:01:56
开发平台(Platform): GCC, Linux
额外使用到的函数库(Library Used): 无
问题(Question):服务器端接到装置端传回一组base64字串
decode完,用ofstream::open开了一个新的准备写入档案,再用ofstream::write写入
成一个jpg档,但为了防止有心人上传一段假的base64字串,所以写出来的jpg档事实
上不是图片档,读取会corrupt,请问我要如何再原本的main thread里再以c++程式
检测刚写入的档案,是否能读取成功?
喂入的资料(Input):base64字串
预期的正确结果(Expected Output): 能判断图片档写入成功
错误结果(Wrong Output):
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-06-08 18:00:00
装imagemagick,用identify看他是图档还是什么挖哥(当然你要用system()执行)
作者: TobyH4cker (Toby (我要当好人))   2016-06-08 20:35:00
然后就被黑了XD
作者: winken2004 (新竹肥宅)   2016-06-08 20:39:00
检查jpg header?
作者: LiloHuang (十年一刻)   2016-06-08 20:42:00
宽松的检查,可看档头 SOI (FF D8) 档尾 EOI (FF D9)https://goo.gl/70pW4L如果要严谨一点还是得把整个 JPEG structure 走一次system() 如果是公开服务器得留意 command injection个人认为就是交给 jpeg decoder 来判断就好用好一点的 JPEG library 读资讯 (e.g. libjpeg-turbo)
作者: Killercat (杀人猫™)   2016-06-13 07:36:00
基本上JPG格式很松散 只要头两个位元是[255, 216]出来通常就不会corrupt, 顶多图看起来是噪声

Links booklink

Contact Us: admin [ a t ] ucptt.com