国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

localResizeIMG先壓縮后使用ajax無(wú)刷新上傳(移動(dòng)端)

2019-11-20 11:51:32
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

下面通過(guò)文字說(shuō)明和代碼分析的方式給大家分享移動(dòng)端圖片上傳之localResizeIMG先壓縮后ajax無(wú)刷新上傳,具體實(shí)現(xiàn)過(guò)程請(qǐng)看下文。

現(xiàn)在科技太發(fā)達(dá),移動(dòng)設(shè)備像素越來(lái)越高,隨便一張照片2M+,但是要做移動(dòng)端圖片上傳和pc上略有不同,移動(dòng)端你不能去限制圖片大小,讓用戶先處理圖片再上傳,這樣不現(xiàn)實(shí)。所以理解的解決方案就是在上傳先進(jìn)行圖片壓縮,然后再把壓縮后的圖片上傳到服務(wù)器。

一翻google之后,發(fā)現(xiàn)了localResizeIMG,它會(huì)對(duì)圖片進(jìn)行壓縮成你指定寬度及質(zhì)量度并轉(zhuǎn)換成base64圖片格式,那么我們就可以把這個(gè)base64通過(guò)ajax傳到后臺(tái),再進(jìn)行保存,先壓縮后上傳的目的就達(dá)到了。

處理過(guò)程

LocalResizeIMG壓縮圖片
AjaxPost圖片base64到后臺(tái)
后臺(tái)接收base64并保存,返回狀態(tài)
前臺(tái)代碼

重點(diǎn),引用LocalResizeIMG.js(插件主體)及mobileBUGFix.mini.js(移動(dòng)端的補(bǔ)?。?/strong>

<!DOCTYPE HTML><html><head><meta charset="UTF-8"><title>移動(dòng)端圖片上傳解決方案localResizeIMG先壓縮后ajax無(wú)刷新上傳</title><meta name="description" content="" /><meta name="viewport" content="width=device-width , initial-scale=1.0 , user-scalable=0 , minimum-scale=1.0 , maximum-scale=1.0" /><script type='text/javascript' src='js/jquery-2.0.3.min.js'></script><script type='text/javascript' src='js/LocalResizeIMG.js'></script><script type='text/javascript' src='js/patch/mobileBUGFix.mini.js'></script><style type="text/css"> body{font-family:"微軟雅黑"} .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%;}</style></head><body><div style="width:500px;margin:10px auto; border:solid 1px #ddd; overflow:hidden; "> <input type="file" id="uploadphoto" name="uploadfile" value="請(qǐng)點(diǎn)擊上傳圖片" style="display:none;" />  <div class="imglist"></div>  <a href="javascript:void(0);" onclick="uploadphoto.click()" class="uploadbtn">點(diǎn)擊上傳文件</a></div><div style="text-align:center;margin-top:50px;">@ <a >碼農(nóng)小兵,專注web開(kāi)發(fā) 歡迎投稿</a></div> </body></html>

Js部份,localResizeIMG及Ajax提交部份

使用方法

$('input:file').localResizeIMG({   width: 400,//寬度   quality: 1,//質(zhì)量   success: function (result) {      result.base64/result.clearBase64   }});

localResizeIMG參數(shù):

          width:縮略圖寬度
          quality:圖片質(zhì)量,0―1,越大越好

localResizeIMG返回值

           result.base64:帶圖片類型的base64編碼,可直接用于img標(biāo)簽的src,如“data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/…2wBDAAYEBQYFBAY”;

           result.clearBase64:不帶圖片類型的編碼,如“/9j/4AAQSkZJRgABAQAAAQABAAD/…2wBDAAYEBQYFBAY”

$(document).ready(function(e) {  $('#uploadphoto').localResizeIMG({   width: 400,   quality: 1,   success: function (result) {      var submitData={        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 src="'+data.url+'" alt="" />';         $(".imglist").append(attstr);        }      },       complete :function(XMLHttpRequest, textStatus){      },      error:function(XMLHttpRequest, textStatus, errorThrown){ //上傳失敗         alert(XMLHttpRequest.status);        alert(XMLHttpRequest.readyState);        alert(textStatus);      }    });    } });});

保存文件

       在上面一步中,我們把result.clearBase64通過(guò)Ajax傳入到upload.php中,接下來(lái)我們就要在upload.php中接收base64參數(shù),把它轉(zhuǎn)換成img文件保存來(lái)服務(wù)器中,并給出提示。

$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 );  }

不足之處

        localResizeIMG壓縮后的圖片模式都是jpeg,不能保證原有格式。

        當(dāng)圖片寬度小于localResizeIMG設(shè)置的width參數(shù)時(shí),圖片會(huì)被拉申,從而引起圖片失真(比如width高為600,圖片只在400px時(shí),壓縮后的圖片就變成了600px,圖片尺寸變大了,會(huì)失真),不知道大家有沒(méi)有什么好的解決方法。

以上內(nèi)容是本文介紹localResizeIMG先壓縮后使用ajax無(wú)刷新上傳的全部?jī)?nèi)容,希望大家喜歡。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵台县| 四子王旗| 淮滨县| 吴忠市| 特克斯县| 历史| 石楼县| 承德县| 浦东新区| 边坝县| 台东市| 桂林市| 屯门区| 太谷县| 油尖旺区| 安宁市| 庐江县| 读书| 浮梁县| 万盛区| 普宁市| 江北区| 东方市| 泗水县| 山西省| 宜黄县| 孝感市| 南召县| 金堂县| 鸡东县| 澜沧| 新津县| 芦溪县| 灵璧县| 扎赉特旗| 宜宾市| 竹北市| 永昌县| 东山县| 咸宁市| 顺昌县|