手机压缩图片透过base64 上传 ajax不能post

WBOY
Freigeben: 2016-06-13 12:25:26
Original
1137 Leute haben es durchsucht

手机压缩图片通过base64 上传 ajax不能post

<br /><br /><!DOCTYPE html><br /><html><br /><head><br />    <meta charset="utf-8"/><br />    <title>测试上传文件</title><br />    <script type="text/javascript" src="js/jquery.min.js"></script><br />    <script type="text/javascript" src="../js/mobileFix.mini.js"></script><br />    <script type="text/javascript" src="../js/exif.js"></script><br />    <script type="text/javascript" src="../js/lrz.js"></script><br /></head><br /><style>    body {<br />    margin: 20px 20%;<br />    color: #777;<br />    text-align: center;<br />}</style><br /><body><br /><hr/><br /><input type="file" accept="image/*"/><br /><hr/><br /><script type="text/javascript"><br />    var input = document.querySelector('input');<br />    input.onchange = function () {<br />        lrz(this.files[0],<br />                {width: 800, height: 600,quality:0.5,<br />                    before: function(){},<br />                    fail: function(){},<br />                    done: function (results) {<br />                        // 你需要的数据都在这里,可以以字符串的形式传送base64给服务端转存为图片。<br />                        var img = new Image();<br />                        $('body').append(img);<br />                        // 发送到后端<br />                        var xhr = new XMLHttpRequest();<br />                        var data = {<br />                            base64: results.base64,<br />                            size: results.base64.length // 校验用,防止未完整接收<br />                        };<br />                        xhr.open('POST', '1.php');<br />                        xhr.setRequestHeader('Content-Type', 'application/json; charset=utf-8');<br />                        xhr.onreadystatechange = function () {<br />                            if (xhr.readyState === 4 && xhr.status === 200) {<br />                                var result = JSON.parse(xhr.response);<br />                                result.error<br />                                        ? alert('服务端错误,未能保存图片')<br />                                    //: demo_report('服务端实存的图片', result.src, result.size);<br />                                        : img.src = result.src;<br />                            }<br />                        };<br />                        xhr.send(JSON.stringify(data)); // 发送base64<br /><br />                    },<br />                    always: function(){<br /><br />                    }<br />                }<br />        )};<br /><br /></script><br /></body><br /><br /></html><br /><br />
Nach dem Login kopieren


<br /><?php<br />$base64=file_get_contents("php://input"); //获取输入流<br />$base64=json_decode($base64,1);<br />$data = $base64['base64'];<br />preg_match("/data:image\/(.*);base64,/",$data,$res);<br />$ext = $res[1];<br />if(!in_array($ext,array("jpg","jpeg","png","gif"))){<br />	echo json_encode(array("error"=>1));die;<br />}<br />$file=time().'.'.$ext;<br />$data = preg_replace("/data:image\/(.*);base64,/","",$data);<br />if (file_put_contents('../uploadFiles/'.$file,base64_decode($data))===false) {<br />	echo json_encode(array("error"=>1));<br />}else{<br />	echo json_encode(array("error"=>0,'src'=>'../uploadFiles/'.$file));<br /><br />}<br /><br />
Nach dem Login kopieren


这段代码上传到ubuntu上安卓4.4手机访问有问题,pc端没有问题。自己电脑win,手机、pc都没有问题。
xhr.send(JSON.stringify(data)); // 发送base64
根本没有post数据。
------解决思路----------------------
只要有一种客户端能够上传成功,就表示代码没有大问题。有的只是兼容性问题
既然已经使用了 jQuery,那为何不使用它提供的 ajax?至少兼容性工作他已替你做好了
------解决思路----------------------
同意版主 

你在安卓微信浏览器上测试的时候就会发现这个不是个例 有些是因为封了上传


------解决思路----------------------
直接使用jquery吧,这样可以更好解决兼容问题。

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage