首页 > 代码库 > 移动端压缩并ajax上传图片解决方案
移动端压缩并ajax上传图片解决方案
1.需求
做一个前端可压缩并且上传图片到后台的功能
2.使用组件
用到的主要是jq和LocalResizeIMG这2个库
3.使用方法
a.引入脚本文件
<script type=‘text/javascript‘ src=http://www.mamicode.com/‘js/jquery-2.0.3.min.js‘></script>>
b.编写html
<div style="width:100%;margin:10px auto; border:solid 1px #ddd; overflow:hidden; "> <input type="file" id="uploadphoto" name="uploadfile" value="请点击上传图片" style="display:none;" /> <div class="imglist"></div> <a href="javascript:void(0);" onclick="uploadphoto.click()" class="uploadbtn">点击上传文件</a> </div>
c.编写css
body{font-family:"微软雅黑"} *{margin: 0;padding: 0; } .uploadbtn{ display:block;height:40px; line-height:40px; color:#333; text-align:center; width:100%; background:#f2f2f2; text-decoration:none; } .imglist{min-height:200px;margin:10px;} .imglist img{width:100%;}
d.执行上传代码
<script type="text/javascript"> $(document).ready(function(e) { $(‘#uploadphoto‘).localResizeIMG({ //要压缩到的宽度 width: 1900, quality: 1, success: function (result) { // result.clearBase64是base64的数据 var submitData=http://www.mamicode.com/{ base64_string:result.clearBase64, }; $.ajax({ type: "POST", url: "upload.php", data: submitData, dataType:"json", success: function(data){ if (0 == data.status) { alert(data.content); return false; } else { alert(data.content); var attstr= ‘<img id=‘+‘element_id‘+‘ src="http://www.mamicode.com/‘+data.url+‘">‘; $(".imglist").append(attstr); return false; } }, complete :function(XMLHttpRequest, textStatus){ }, error:function(XMLHttpRequest, textStatus, errorThrown){ //上传失败 alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); } }); }); </script>
e.后端php接收数据并处理。
后端会接收前端的base64数据,并base64解码保存在images文件夹下面
<?php $base64_string = $_POST[‘base64_string‘]; $savename = uniqid().‘.jpeg‘;//localResizeIMG压缩后的图片都是jpeg格式 $savepath = ‘images/‘.$savename; $image = base64_to_img( $base64_string, $savepath ); if($image){ echo ‘{"status":1,"content":"图片上传成功,请用手指轻触要做为头像的区域","url":"‘.$image.‘"}‘; }else{ echo ‘{"status":0,"content":"上传失败"}‘; } function base64_to_img( $base64_string, $output_file ) { $ifp = fopen( $output_file, "wb" ); fwrite( $ifp, base64_decode( $base64_string) ); fclose( $ifp ); return( $output_file ); } ?>
4.总结
思路就是前端把图片base64编码,再传到后台进行base64解码并保存把图片返回给客户端并在服务端保存一份。(需在服务器下运行代码)
参考资料:http://www.cnblogs.com/manongxiaobing/p/4720568.html
移动端压缩并ajax上传图片解决方案
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。