麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

angularjs客戶端實現壓縮圖片文件并上傳實例

2024-05-06 16:22:44
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了angularjs客戶端實現壓縮圖片文件并上傳實例,本文直接給出代碼實例,需要的朋友可以參考下

主要是利用html5的canvas來進行圖片的壓縮,然后轉化為dataURL,再有dataURL轉化為Blob文件,Blob對象可以直接賦值給Formdata.

 

 
  1. app.service('Util'function($q) { 
  2. var dataURItoBlob = function(dataURI) { 
  3. // convert base64/URLEncoded data component to raw binary data held in a string 
  4. var byteString; 
  5. if (dataURI.split(',')[0].indexOf('base64') >= 0) 
  6. byteString = atob(dataURI.split(',')[1]); 
  7. else 
  8. byteString = unescape(dataURI.split(',')[1]); 
  9.  
  10. // separate out the mime component 
  11. var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; 
  12.  
  13. // write the bytes of the string to a typed array 
  14. var ia = new Uint8Array(byteString.length); 
  15. for (var i = 0; i < byteString.length; i++) { 
  16. ia[i] = byteString.charCodeAt(i); 
  17.  
  18. return new Blob([ia], { 
  19. type: mimeString 
  20. }); 
  21. }; 
  22.  
  23. var resizeFile = function(file) { 
  24. var deferred = $q.defer(); 
  25. var img = document.createElement("img"); 
  26. try { 
  27. var reader = new FileReader(); 
  28. reader.onload = function(e) { 
  29. img.src = e.target.result; 
  30.  
  31. //resize the image using canvas 
  32. var canvas = document.createElement("canvas"); 
  33. var ctx = canvas.getContext("2d"); 
  34. ctx.drawImage(img, 0, 0); 
  35. var MAX_WIDTH = 800; 
  36. var MAX_HEIGHT = 800; 
  37. var width = img.width; 
  38. var height = img.height; 
  39. if (width > height) { 
  40. if (width > MAX_WIDTH) { 
  41. height *= MAX_WIDTH / width; 
  42. width = MAX_WIDTH; 
  43. else { 
  44. if (height > MAX_HEIGHT) { 
  45. width *= MAX_HEIGHT / height; 
  46. height = MAX_HEIGHT; 
  47. canvas.width = width; 
  48. canvas.height = height; 
  49. var ctx = canvas.getContext("2d"); 
  50. ctx.drawImage(img, 0, 0, width, height); 
  51.  
  52. //change the dataUrl to blob data for uploading to server 
  53. var dataURL = canvas.toDataURL('image/jpeg'); 
  54. var blob = dataURItoBlob(dataURL); 
  55.  
  56. deferred.resolve(blob); 
  57. }; 
  58. reader.readAsDataURL(file); 
  59. catch (e) { 
  60. deferred.resolve(e); 
  61. return deferred.promise; 
  62.  
  63. }; 
  64. return { 
  65. resizeFile: resizeFile 
  66. }; 
  67.  
  68. }); 

由于目前angualrjs暫不支持通過multiform data上傳文件,所以利用如下的代碼可以上傳formdata里的文件

 

 
  1. app.controller('CompanyCtrl'function($http, Util) { 
  2.  
  3. Util.resizeFile(input.files[0]).then(function(blob_data) { 
  4. var fd = new FormData(); 
  5. fd.append("imageFile", blob_data); 
  6. $http.post('http://your.domain.com/upload', fd, { 
  7. headers: {'Content-Type': undefined }, 
  8. transformRequest: angular.identity 
  9. }) 
  10. .success(function(data) { 
  11. $scope.model.company_pict = data[0]; 
  12. }) 
  13. .error(function() { 
  14. console.log("uploaded error..."
  15. }); 
  16. }, function(err_reason) { 
  17. console.log(err_reason); 
  18. }); 
  19.  
  20.  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 97风流梦电影 | 精品久久久久久中文字幕 | 亚洲性生活免费视频 | 国产在线精品一区二区不卡 | 李宗瑞国产福利视频一区 | 国产精品久久久久久婷婷天堂 | 欧美精品一区二区三区在线 | 日本不卡中文字幕 | 91 在线免费观看 | 一本一道久久久a久久久精品91 | 超碰97国产在线 | 特一级黄色毛片 | 欧美 国产 综合 | 海外中文字幕在线观看 | av免费在线免费观看 | 精品中文一区 | 中文字幕四区 | 视频www| 久久久久久久99 | 性欧美极品xxxx欧美一区二区 | 一级黄色淫片 | 鲁久久| 91中文字幕在线观看 | 伊人99在线| 久久av一区二区 | 理论片中文字幕 | 毛片免费观看视频 | 国产91大片| 在线看成人av | 91免费视频版 | 久久亚洲第一 | 91色琪琪电影亚洲精品久久 | 亚洲一级片在线观看 | 黄污免费网站 | 午夜视频在线在免费 | 全免费午夜一级毛片真人 | 亚洲欧美国产高清va在线播放 | 成人一级毛片 | 国产亚洲高清视频 | 91久久夜色精品国产网站 | 中文字幕精品在线播放 |