irpas技术客

解决base64转 图片 视频保存本地无法识别的问题_superboy@.

大大的周 3338

项目有要求前端向后台发base64,后台接收base64转换成 图片 或者 视频 保存在本地。

这是前端代码 (没有问题)

<!DOCTYPE html> <html lang="en"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>webrtc</title> <div class="huaweisignup" style="width:1300px;height:1000px;background-color:yellow"> <div style="width:800px;height:800px;background-color:red" id="text"> <!-- 图片显示区域 --> </div> </div> <img src='https://img-blog.csdnimg.cn/2022020415493690042.png'/> <script> var websocket=null; if('WebSocket' in window){ websocket=new WebSocket('ws://127.0.0.1:8181/webSocketWeb'); // websocket=new WebSocket('ws://139.159.142.192:8181/webSocketWeb'); }else{ alert('该浏览器不支持websocket'); } websocket.onopen=function (ev) { console.log('建立连接'); } websocket.onclose=function (ev) { console.log('连接关闭'); } var base64code = ''; websocket.onmessage=function (data) { console.log('收到消息:'+data.data); base64code = 'data:image/png;base64,' + data.data; var string = '<img src='+base64code+' style="margin-top:3%"/>' document.getElementById("text").innerHTML=string; //弹窗提醒,播放消息 } window.onbeforeunload=function (ev) { websocket.close(); } //发送消息 function send() { var files = document.getElementById('name').files; if(files.length>0){ var fileReader = new FileReader(); fileReader.readAsDataURL(files[0]) fileReader.onload=function (e) { // var message = JSON.stringify({code:2,msg:e.target.result}); // console.log(e.target) console.log(e.target.result) websocket.send(e.target.result) } } } //发送消息 function send1() { var data = document.getElementById('data').value; websocket.send(data); } </script> </html>

这是后端代码(有问题)

Date date = new Date(); msg += date.getTime()+ ".jpg"; // String url = "/home/ethan/Desktop/video/" + msg; String url = "F:\\比赛\\肖帮\\后端\\fuwuqi\\src\\main\\resources\\static\\" + msg; InputStream is = new ByteArrayInputStream(Base64.getMimeDecoder().decode(baseValue.getBytes(Charsets.ISO_8859_1))); FileOutputStream fos = new FileOutputStream(new File(url)); byte[] bytes = new byte[is.available()]; System.out.println(bytes.length); int x = -1; while ((x = is.read(bytes)) != -1) { fos.write(bytes); } is.close(); fos.close();

输出图片会显示

好家伙这不气个人吗……

解决办法!!

把images字符串修改一下,去掉base64头

//重要!!!去掉base64头 String images1 = images.substring(23);

视频也是一样!

?

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #解决base64转 #图片 #视频保存本地无法识别的问题 #或者 #视频 #保存在本地