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

首頁 > 語言 > JavaScript > 正文

angular實現IM聊天圖片發送實例

2024-05-06 15:17:32
字體:
來源:轉載
供稿:網友

IM聊天圖片發送有兩種方式

    截圖粘貼到信息框后點擊發送 選擇本地圖片發送

圖片剪切粘貼,使用QQ或者其他平臺的截圖功能,截圖后粘貼 Ctrl+V ,這個過程需要獲取粘貼板上的圖片數據,并在頁面中展示,也就是將圖片數據創建一個img元素,就可以顯示出來了。

從粘貼面板中獲取圖片數據

/** * 黏貼發送圖片 * @param e */pasteData(e) {  e.preventDefault();  let clipboardData = e.clipboardData;  if (clipboardData) { //如果支持這個    let items = clipboardData.items; //獲取黏貼里的對象    if (!items) {      return;    }    let item;    let types = clipboardData.types || [];    for (let i = 0, len = types.length; i< len; i++) {      if (types[i] === 'Files') {        item = items[i];        break;      }    }    if (item && item.kind === 'file' && item.type.match(/^image///i)) {      imgReader(item);    }  }  functionimgReader(obj){   let $messageBox=$('#message-boxID');    let file = obj.getAsFile(),      reader = new FileReader();    // 讀取文件    reader.readAsDataURL(file);    reader.onload = function(e){      let img = new Image();      img.src = e.target['result'];      img.className = 'chatImg';      $messageBox.append(img);      setTimeout(()=> {        $messageBox.scrollTop($messageBox[0].scrollHeight);      }, 0)    };  }}

本地圖片選擇

<inputid="upImg"name="fileTrans"type="file"(change)="onFileSelect($event)"/>
/** * 選擇圖片 * @param event */files:any[]=[];onFileSelect(event) {  this.files=[];  let files = event.dataTransfer ? event.dataTransfer.files : event.target.files;  let file;  for (let i = 0; i < files.length; i++) {    file = files[i];    if (this.isImage(file)) {      file.objectURL = this.sanitizer.bypassSecurityTrustUrl((window.URL.createObjectURL(files[i])));      this.files.push(files[i]);    }  }  let fileUrl = file.objectURL.changingThisBreaksApplicationSecurity;  let img = new Image();  img.src = fileUrl;  img.className = 'chatImg';  $('#message-boxID').append(img);}

圖片上傳服務器

前端angular上傳圖片到服務器,必然是ajax請求的方式,將圖片數據轉成二進制流傳給后端了。

url:string="http://localhost:8080/upload";progress:number=0;//進度uploadPic(formData):Promise<any> {   let xhr = new XMLHttpRequest(),         //封裝xhr請求   return new Pormise(resolve,reject){     xhr.upload.addEventListener('progress', (e: ProgressEvent) => {     if(e.lengthComputable) {      this.progress = Math.round((e.loaded * 100) / e.total);     }     }, false);     xhr.onreadystatechange = ()=> {       if(xhr.readyState == 4) {         this.progress = 0;                  if(xhr.status >= 200 && xhr.status < 300)           resolve({xhr: xhr, files: this.files});         else           reject({xhr: xhr, files: this.files});       }     };          xhr.open('POST', this.url, true);     //jwt后端驗證,設置請求頭部信息,解決跨域     xhr.setRequestHeader("Authorization", "Basic " + localStorage.getItem('jwt'));          xhr.send(formData);   } }            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 马公市| 德州市| 丹寨县| 普定县| 麻阳| 昌乐县| 祁东县| 临高县| 贞丰县| 光山县| 定边县| 黔西县| 新干县| 郑州市| 玉山县| 榕江县| 锡林浩特市| 定襄县| 曲松县| 高安市| 庄浪县| 张家港市| 台东市| 南靖县| 宜宾市| 鄱阳县| 桦甸市| 阜南县| 信阳市| 江门市| 余庆县| 沭阳县| 类乌齐县| 阿拉尔市| 和硕县| 诸城市| 黄龙县| 伽师县| 竹北市| 黄龙县| 江口县|