亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > HTML5 > 正文

html5中如何將圖片的絕對路徑轉換成文件對象

2024-09-05 07:19:28
字體:
來源:轉載
供稿:網友

本文介紹了html5中將圖片的絕對路徑轉換成文件對象,分享給大家,具體如下:

將圖片的絕對路徑轉換成base64編碼,請看這篇文章

我們先來理解基本知識點:

1. 理解HTML5中的FileList對象與file對象。

在HTML5中,FileList對象表示用戶選擇的文件列表。通過添加multipe屬性,file控件內允許一次選擇多個文件??丶鹊拿恳粋€用戶選擇的文件都是一個file對象,而FileList對象則是file對象的列表。代表用戶選擇的所有文件。我們先來看一個簡單的demo,看下file文件對象有哪些屬性。如下代碼:

<!DOCTYPE html><html>  <head>    <title>filesystem:URL</title>  </head>  <body>    <div>      <label>選擇:</label>      <input type='file' multiple id="file" />      <input type="button" value="文件上傳" onClick="showFile()" />    </div>    <script>      function showFile() {        var files = document.getElementById('file').files;  // 返回所有被選擇的文件        for (var i = 0, ilen = files.length; i < ilen; i++) {          // 打印出單個文件對象的信息          console.log(files[i]);          /*             * 打印的信息如下:           File {            lastModified: 1457946612000            lastModifiedDate: Mon Mar 14 2016 17:10:12 GMT+0800 (CST) {}            name: "test.html"            size: 796            type: "text/html"            webkitRelativePath: ""           */          /*  如果上傳的是一張圖片的話,會返回如下信息的            File {              lastModified: 1466907500000              lastModifiedDate: Sun Jun 26 2016 10:18:20 GMT+0800 (CST) {}              name: "a.jpg"              size: 23684              type: "image/jpeg"              webkitRelativePath: ""            }          */          /*           因此 如果需要判斷該上傳的文件是不是圖像文件的話,可以根據type類型來判斷如下:           var file = files[i];           if (!/image///w+/.test(file.type)) {              console.log('該文件不是圖像文件');           } else {              console.log('該文件是圖像文件');           }           但是如果只讓傳圖片的話,可以在image控件添加一個屬性 accept="image/*" 即可;我們可以如下寫代碼:           <input type='file' multiple accept = 'image/gif,image/jpeg,image/jpg,image/png' />           */        }      }    </script>  </body></html>

2. 理解Blob對象

要點:在HTML5中,新增一個Blob對象,代表原始二進制數據,其實file對象也是繼承了Blob對象。

Blob對象有兩個屬性,size屬性表示一個Blob對象的字節長度,type屬性表示Blob的MIME類型,如果是未知類型,則返回一個空字符串。

請看如下代碼:

<!DOCTYPE html><html>  <head>    <title>filesystem:URL</title>  </head>  <body>    <div>      <label>選擇文件:</label>      <input type="file" id="file" />      <input type="button" value="顯示文件信息" onClick="showFileType()" />      <p>文件字節長度: <span id="size"></span></p>      <p>文件類型:<span id="type"></span></p>    </div>    <script>      function showFileType() {        var file;        // 獲取用戶選擇的第一個文件        file = document.getElementById('file').files[0];        var size = document.getElementById('size');        var type = document.getElementById('type');        // 顯示文件字節的長度        size.innerHTML = file.size;        // 顯示文件的類型        type.innerHTML = file.type;        // 打開控制臺 查看返回的file對象        console.log(file);      }    </script>      </body></html>

注意:Blob和File是可以同時使用的,可以使用FileReader從Blob中讀取數據。

下面是一段絕對路徑的圖片地址轉換為base64編碼的圖片,然后將base64編碼的圖片轉換成blob對象。代碼如下:

<!DOCTYPE html><html>  <head>    <title>將以base64的圖片url數據轉換為Blob</title>  </head>  <body>    <script>      /**         * 將以base64的圖片url數據轉換為Blob         * @param urlData         * 用url方式表示的base64圖片數據         */        function convertBase64UrlToBlob(base64){         var urlData =  base64.dataURL;        var type = base64.type;        var bytes = window.atob(urlData.split(',')[1]); //去掉url的頭,并轉換為byte        //處理異常,將ascii碼小于0的轉換為大于0          var ab = new ArrayBuffer(bytes.length);          var ia = new Uint8Array(ab);          for (var i = 0; i < bytes.length; i++) {              ia[i] = bytes.charCodeAt(i);          }          return new Blob( [ab] , {type : type});        }      /*        * 圖片的絕對路徑地址 轉換成base64編碼 如下代碼:        */      function getBase64Image(img) {        var canvas = document.createElement("canvas");        canvas.width = img.width;        canvas.height = img.height;        var ctx = canvas.getContext("2d");        ctx.drawImage(img, 0, 0, img.width, img.height);        var ext = img.src.substring(img.src.lastIndexOf(".")+1).toLowerCase();        var dataURL = canvas.toDataURL("image/"+ext);        return {          dataURL: dataURL,          type: "image/"+ext        };      }      var img = "https://img.alicdn.com/bao/uploaded/TB1qimQIpXXXXXbXFXXSutbFXXX.jpg";      var image = new Image();      image.crossOrigin = '';      image.src = img;      image.onload = function(){        var base64 = getBase64Image(image);        console.log(base64);        /*         打印信息如下:         {          dataURL: "data:image/png;base64,xxx"          type: "image/jpg"         }         */        var img2 = convertBase64UrlToBlob(base64);        console.log(img2);        /*         打印信息如下:         Blob {size: 9585, type: "image/jpg"}         */      }     </script>  </body></html>

注意:在HTML5中,新增一個Blob對象,代表原始二進制數據,其實file對象也是繼承了Blob對象。因此我們可以使用圖片的絕對地址轉換成文件對象。

因此我們可以使用絕對地址的圖片轉換成file文件對象,詳細的demo可以看我git上圖片上傳控件,該插件先是圖片上傳支持,然后突然發現到編輯頁面的時候,需要顯示默認的圖片,也可以同時支持在默認顯示圖片的情況下繼續上傳新圖片,或者刪除所有的圖片,但是開發人員給我的只有圖片的絕對地址,所以就一直想通過圖片的絕對地址如何轉換成file對象,如果不轉成file對象的話,使用這句代碼的時候 var reader = new FileReader(); 會報錯,因此可以使用我們上面講的blob對象先轉換成blob對象,然后就可以使用文件操作對象 fileReader。

詳細的代碼,請看我git上的 圖片上傳控件(https://github.com/tugenhua0707/html5UploadImage) , 效果查看 https://tugenhua0707.github.io/html5UploadImage/index.html

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品视频在线观看视频| 亚洲欧洲日产国码av系列天堂| 精品成人国产在线观看男人呻吟| 国产午夜精品理论片a级探花| 亚洲精品www久久久久久广东| 精品久久久久久久久久ntr影视| 亚洲国产欧美一区二区丝袜黑人| 欧美放荡办公室videos4k| 国外视频精品毛片| 这里只有精品视频在线| 亚洲精品一区二区网址| 国产99在线|中文| 亚洲国产成人在线视频| 国产成人aa精品一区在线播放| 欧美大学生性色视频| 成人网在线免费看| 日韩有码在线电影| 欧美在线精品免播放器视频| 91av在线播放| 久久久久久久久爱| 欧美丝袜一区二区三区| 狠狠躁夜夜躁人人爽超碰91| 成人97在线观看视频| 成人免费看片视频| 国产日韩欧美日韩大片| 78m国产成人精品视频| 一本大道久久加勒比香蕉| 免费91麻豆精品国产自产在线观看| 亚洲最新av网址| 国产精品美乳一区二区免费| 中文字幕欧美国内| 精品视频中文字幕| 色综合色综合久久综合频道88| 97精品国产97久久久久久春色| 91精品久久久久久久久中文字幕| 国产精品91久久久| 精品视频—区二区三区免费| 国产精品美女免费| 欧美人与性动交| 色综合亚洲精品激情狠狠| 欧美国产日韩一区二区三区| 久久理论片午夜琪琪电影网| 国产高清在线不卡| 亚洲国产日韩欧美在线动漫| 不卡av在线网站| 久久精品视频网站| 久久国产精品久久久久| 日韩电视剧在线观看免费网站| 色哟哟亚洲精品一区二区| 欧美一区三区三区高中清蜜桃| 91影院在线免费观看视频| 成人激情视频免费在线| 欧美理论在线观看| 色婷婷综合成人| 日韩男女性生活视频| 97色在线观看免费视频| 8050国产精品久久久久久| 欧美日韩成人在线观看| 国产精品久久久999| 日韩一区二区福利| 国产91免费观看| 亚洲精品国产拍免费91在线| 国产精品永久免费观看| 国产精品极品美女粉嫩高清在线| 欧美亚洲视频在线观看| 中国人与牲禽动交精品| 日韩激情在线视频| 96sao精品视频在线观看| 亚洲欧洲自拍偷拍| 欧洲亚洲免费视频| 亚洲天堂一区二区三区| 97视频在线观看视频免费视频| 亚洲激情视频在线观看| 欧美黄色成人网| 国产精品视频久久| 欧美一级视频在线观看| 久久精品中文字幕免费mv| 国产精品美女在线| 亚洲精品一区二区在线| 久久99亚洲精品| 少妇精69xxtheporn| 久久久久国产一区二区三区| 欧美日韩加勒比精品一区| 国产精品羞羞答答| 国产69精品久久久| 91地址最新发布| 日本久久精品视频| 欧美极品少妇xxxxⅹ免费视频| 日韩欧中文字幕| 亚洲视频国产视频| 午夜精品一区二区三区在线播放| 美日韩精品免费观看视频| 日韩亚洲成人av在线| 亚洲精品久久7777777| 亚洲午夜久久久影院| 久久久国产精彩视频美女艺术照福利| 欧美性理论片在线观看片免费| 中文字幕不卡av| 亚洲中国色老太| 影音先锋欧美在线资源| 久久天堂av综合合色| 国产精品久久国产精品99gif| 俺去了亚洲欧美日韩| 国产精品视频1区| 在线观看视频亚洲| 久久久久久亚洲精品中文字幕| 国产99在线|中文| 久久精品国产精品亚洲| 91久久久在线| 一本色道久久综合狠狠躁篇怎么玩| 欧美精品18videos性欧美| 国产精品久久久久久久久久| 亚洲理论电影网| 久久精品这里热有精品| 青青草国产精品一区二区| 国产精品嫩草影院久久久| 欧美天天综合色影久久精品| 欧美亚洲成人xxx| 美女性感视频久久久| 国产亚洲欧洲在线| 亚洲午夜未满十八勿入免费观看全集| 久久69精品久久久久久国产越南| 亚洲欧美国产精品va在线观看| 中文字幕在线亚洲| 欧美日韩综合视频网址| 欧美大成色www永久网站婷| 久久激情视频免费观看| 欧美性生活大片免费观看网址| 在线a欧美视频| 久久综合电影一区| 日韩精品黄色网| 国产精品爽黄69天堂a| 亚洲精品成人网| 久久人体大胆视频| 欧美在线一区二区三区四| 国产美女扒开尿口久久久| 日韩精品视频三区| 久久久久久久电影一区| 日韩中文综合网| 国产精品一区二区av影院萌芽| 成人网址在线观看| 91国产一区在线| 日韩av网站在线| 色综合男人天堂| 亚洲精品美女久久久久| 日韩av免费在线播放| 欧美性受xxx| 国产精品视频区| 91精品国产色综合| 亚洲成人中文字幕| 亚洲色图35p| 九九热视频这里只有精品| 91精品成人久久| 伊人青青综合网站| 欧美成人午夜激情视频| 亚洲第一偷拍网| 中文字幕久热精品视频在线| 欧美亚洲国产另类| 久久综合久中文字幕青草| 成人免费福利在线| 国产精品视频26uuu| 国产精品成人免费视频| 91av在线网站| 日韩av影视在线|