濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > Ajax實(shí)現(xiàn)圖片上傳并預(yù)覽功能

Ajax實(shí)現(xiàn)圖片上傳并預(yù)覽功能

熱門標(biāo)簽:荊州智能電銷機(jī)器人 外呼系統(tǒng)api對(duì)接 銷售電銷機(jī)器人詐騙 大學(xué)校門地圖標(biāo)注 福建微碼電話機(jī)器人 地圖標(biāo)注與公司業(yè)務(wù)關(guān)系 平?jīng)龈叩碌貓D標(biāo)注商戶要收費(fèi)嗎 廣西智能外呼系統(tǒng)多少錢 提高電話機(jī)器人接通率

先給大家展示下效果圖,大家感覺不錯(cuò),請(qǐng)參考實(shí)現(xiàn)代碼。

最近在使用ThinkPHP5開發(fā)項(xiàng)目中客戶有一個(gè)需求是在圖片上傳時(shí)附帶預(yù)覽功能。雖然現(xiàn)在有很多的插件能實(shí)現(xiàn),但是還是覺得自己寫比較好。我們知道,圖片上傳需要一個(gè)input:file表單

input type='file' name='pic'> 

當(dāng)我們點(diǎn)擊表單的時(shí)候提示選擇需要上傳的圖片。但是此需求我們分析一下,可以在點(diǎn)擊圖片的時(shí)候使用JS實(shí)現(xiàn)預(yù)覽功能,并且樓主也是這樣做的。代碼如下:

function getFileUrl(sourceId) {  
  var url; 
  url = window.URL.createObjectURL(document.getElementById(sourceId).files.item(0));  
  return url;  
}  
function preImg(sourceId, targetId) {  
  var url = getFileUrl(sourceId);  
  var imgPre = document.getElementById(targetId);  
  imgPre.src = url;  
} 

效果如下:

但是這樣的話會(huì)涉及很多兼容問題。所以就想到了Ajax,在圖片上傳時(shí),使用Ajax技術(shù)。將圖片上傳到服務(wù)器,再由服務(wù)器返回給我們圖片的上傳地址,然后添加到img標(biāo)簽中去。過程雖然麻煩了點(diǎn),但是親測(cè)不會(huì)有兼容問題。

需要發(fā)送Ajax請(qǐng)求的話,當(dāng)然input:file表單是不能實(shí)現(xiàn)我們的需求的,因此,我們需要給表單關(guān)聯(lián)一個(gè)單擊事件去幫我們進(jìn)行Ajax請(qǐng)求并選擇圖片

form id="form1"> 
   label for="exampleInputEmail1">頭像/label> 
   input type="button" value="上傳圖片" onclick="f.click()" class="btn_mouseout"/>br> 
    p>input type="file" id="f" name="f" onchange="sc(this);" style="display:none"/>/p> 
 /form> 
div id="result">/div> 

當(dāng)我們點(diǎn)擊上傳圖片這個(gè)button按鈕時(shí)觸發(fā)input:file選擇圖片實(shí)現(xiàn)Ajax上傳

script> 
function sc(){ 
  var animateimg = $("#f").val(); //獲取上傳的圖片名 帶// 
  var imgarr=animateimg.split('\\'); //分割 
  var myimg=imgarr[imgarr.length-1]; //去掉 // 獲取圖片名 
  var houzui = myimg.lastIndexOf('.'); //獲取 . 出現(xiàn)的位置 
  var ext = myimg.substring(houzui, myimg.length).toUpperCase(); //切割 . 獲取文件后綴 
  var file = $('#f').get(0).files[0]; //獲取上傳的文件 
  var fileSize = file.size;      //獲取上傳的文件大小 
  var maxSize = 1048576;       //最大1MB 
  if(ext !='.PNG'  ext !='.GIF'  ext !='.JPG'  ext !='.JPEG'  ext !='.BMP'){ 
    parent.layer.msg('文件類型錯(cuò)誤,請(qǐng)上傳圖片類型'); 
    return false; 
  }else if(parseInt(fileSize) >= parseInt(maxSize)){ 
    parent.layer.msg('上傳的文件不能超過1MB'); 
    return false; 
  }else{  
    var data = new FormData($('#form1')[0]);  
    $.ajax({  
      url: "{:url('User/uppic')}",  
      type: 'POST',  
      data: data,  
      dataType: 'JSON',  
      cache: false,  
      processData: false,  
      contentType: false  
    }).done(function(ret){  
      if(ret['isSuccess']){ 
        var result = ''; 
        var result1 = ''; 
        // $("#show").attr('value',+ ret['f'] +); 
        result += 'img src="' + '__ROAD__' + ret['f'] + '" width="100">'; 
        result1 += 'input value="' + ret['f'] + '" name="user_headimg" style="display:none;">'; 
        $('#result').html(result); 
        $('#show').html(result1); 
        layer.msg('上傳成功'); 
      }else{  
        layer.msg('上傳失敗'); 
      }  
    });  
    return false; 
    }  
  } 
/script> 

這里我們采用FormData對(duì)面進(jìn)行表單提交,然后服務(wù)器端接收

public function uppic() 
  { 
    $file = request()->file('f'); 
    $info = $file->move(ROOT_PATH . 'public/uploads/avatar'); 
    $a=$info->getSaveName();  
    $imgp= str_replace("\\","/",$a);  
    $imgpath='uploads/avatar/'.$imgp;  
    $banner_img= $imgpath; 
    $response = array();  
    if($info){  
      $response['isSuccess'] = true;  
      $response['f'] = $imgpath;  
    }else{  
      $response['isSuccess'] = false;  
    }  
        
    echo json_encode($response); 
  } 

這里會(huì)返回圖片上傳的url路徑:$response['f] = $imgpath;現(xiàn)在我們要做的就是將這個(gè)url寫進(jìn)前臺(tái)HTML部分進(jìn)行一個(gè)顯示

div class="form-group"> 
  !-- 將Ajax上傳的圖片路徑添加到數(shù)據(jù)庫 --> 
  div id="show">/div> 
/div> 

在JS中添加

$('#show').html(result1); 

總結(jié)

以上所述是小編給大家介紹的Ajax實(shí)現(xiàn)圖片上傳并預(yù)覽功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

您可能感興趣的文章:
  • 基于Spring Boot利用 ajax實(shí)現(xiàn)上傳圖片功能
  • JavaScript實(shí)現(xiàn)圖片上傳并預(yù)覽并提交ajax
  • jquery+ajax實(shí)現(xiàn)上傳圖片并顯示上傳進(jìn)度功能【附php后臺(tái)接收】
  • PHP結(jié)合jquery ajax實(shí)現(xiàn)上傳多張圖片,并限制圖片大小操作示例
  • thinkPHP利用ajax異步上傳圖片并顯示、刪除的示例
  • ajax實(shí)現(xiàn)上傳圖片保存到后臺(tái)并讀取的實(shí)例
  • php+ajax+h5實(shí)現(xiàn)圖片上傳功能
  • php+ajax實(shí)現(xiàn)異步上傳文件或圖片功能
  • 基于ajax實(shí)現(xiàn)上傳圖片代碼示例解析

標(biāo)簽:婁底 衡陽 內(nèi)江 黔東 樂山 德陽 邯鄲 海南

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Ajax實(shí)現(xiàn)圖片上傳并預(yù)覽功能》,本文關(guān)鍵詞  Ajax,實(shí)現(xiàn),圖片,上傳,并,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Ajax實(shí)現(xiàn)圖片上傳并預(yù)覽功能》相關(guān)的同類信息!
  • 本頁收集關(guān)于Ajax實(shí)現(xiàn)圖片上傳并預(yù)覽功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    永仁县| 莱州市| 南华县| 屏东市| 鹤岗市| 抚宁县| 轮台县| 彝良县| 上栗县| 离岛区| 滨州市| 同心县| 新野县| 佳木斯市| 龙门县| 陇西县| 察隅县| 克东县| 福州市| 开江县| 黄梅县| 永川市| 酒泉市| 丰县| 尚义县| 鞍山市| 南投市| 麻江县| 沙洋县| 定结县| 昌宁县| 德兴市| 辰溪县| 房山区| 马关县| 嘉禾县| 屯留县| 老河口市| 定兴县| 大安市| 五华县|