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

首頁 > 編程 > HTML > 正文

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

2024-08-26 00:20:19
字體:
來源:轉載
供稿:網友

本文介紹了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

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


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美肥婆姓交大片| 亚洲午夜av电影| 精品久久久久久中文字幕大豆网| 久久精品91久久久久久再现| 久久久国产视频| 精品欧美一区二区三区| 欧美特黄级在线| 色偷偷av一区二区三区乱| 久久精品国产清自在天天线| 欧美综合国产精品久久丁香| 中文字幕亚洲综合久久筱田步美| 亚洲欧美日韩另类| 国产精品99久久99久久久二8| 久久影视电视剧凤归四时歌| 国产精品a久久久久久| 精品久久久久久中文字幕| 久久精品电影一区二区| 日韩中文字幕在线免费观看| 国产一区二区动漫| 日韩在线小视频| 国产亚洲视频中文字幕视频| 国产精品91在线| 国产999精品久久久| 91国产视频在线| 青青草精品毛片| 国产精品久久久久久久久久尿| 九九精品视频在线| 国产精品成人在线| 中文国产成人精品久久一| 国模精品一区二区三区色天香| www.欧美三级电影.com| 欧美精品18videos性欧美| 国产精品对白刺激| 色偷偷偷综合中文字幕;dd| 久久久噜久噜久久综合| 狠狠躁夜夜躁人人爽超碰91| 高清一区二区三区四区五区| 久久综合久久美利坚合众国| 国产精品免费一区二区三区都可以| 亚洲精品久久在线| 97热精品视频官网| 国产日韩精品在线播放| 日韩av最新在线观看| 欧美极品少妇xxxxⅹ免费视频| 久久综合电影一区| 精品亚洲va在线va天堂资源站| 久久成人精品视频| 日韩美女在线观看| 亚洲国产精品久久久久秋霞蜜臀| 国产精品午夜视频| 成人免费网站在线看| 久久69精品久久久久久久电影好| 国产精品偷伦视频免费观看国产| 亚洲视频欧美视频| 欧美日韩国产区| 欧美综合激情网| 国语自产偷拍精品视频偷| 国产日韩欧美成人| 成人激情在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲激情视频在线观看| 日本高清久久天堂| 91欧美视频网站| 久久好看免费视频| 欧美成人免费播放| 一本大道香蕉久在线播放29| 欧美午夜激情小视频| 久久亚洲春色中文字幕| 国产成人综合精品在线| 日韩欧美在线视频| 欧美肥臀大乳一区二区免费视频| 国产a级全部精品| 国产精品久久久久久久久| 97视频色精品| 亚洲精品白浆高清久久久久久| 国产一区二区黑人欧美xxxx| 国产一区二区三区在线观看视频| 丰满岳妇乱一区二区三区| 亚洲人成在线观看网站高清| 日韩免费av一区二区| 亚洲人成电影网站色xx| 久久久久久久久国产精品| 国产精品对白刺激| 青草青草久热精品视频在线观看| 日本精品一区二区三区在线| 色偷偷偷综合中文字幕;dd| 91免费在线视频| 久久国产精品首页| 国产一区二区三区在线播放免费观看| 亚洲另类欧美自拍| 欧美日韩亚洲天堂| 欧美有码在线观看视频| 91久久在线播放| 大荫蒂欧美视频另类xxxx| 亚洲区中文字幕| 国产综合在线看| 91精品国产91| 亚洲精美色品网站| 日韩美女主播视频| 亚洲国产成人精品久久久国产成人一区| 在线性视频日韩欧美| 精品一区二区亚洲| 91视频88av| 国产视频久久久久久久| 欧美激情在线观看视频| 亚洲精品一区中文| 一道本无吗dⅴd在线播放一区| 青青在线视频一区二区三区| 91在线观看免费网站| 91精品国产高清久久久久久91| 久久天天躁夜夜躁狠狠躁2022| 国产精品美女视频网站| 国产精品入口免费视频一| 欧美日韩999| 国产精品一区二区女厕厕| 麻豆国产精品va在线观看不卡| 国产偷亚洲偷欧美偷精品| 一区二区国产精品视频| 国产区亚洲区欧美区| 日韩精品在线免费观看| 久久精品视频免费播放| 91最新国产视频| 成人在线观看视频网站| 91在线|亚洲| 亚洲在线第一页| 亚洲国产精品va在线| 亚洲午夜色婷婷在线| 日韩欧美一区二区三区久久| 日本伊人精品一区二区三区介绍| 日韩精品久久久久久福利| 亚洲成年人在线播放| 亚洲欧美999| 久久男人的天堂| 久久6免费高清热精品| 久久亚洲精品成人| 中文字幕精品国产| 欧美黄网免费在线观看| 日韩成人中文字幕在线观看| 精品欧美一区二区三区| 8090成年在线看片午夜| 欧美日韩国产91| 久久精视频免费在线久久完整在线看| 日韩欧美国产免费播放| 成人国产在线激情| 成人黄色av播放免费| 欧美激情videos| 国产欧美欧洲在线观看| 国产日韩在线看片| 国产成人精品一区二区三区| 亚洲欧洲av一区二区| 国产日韩欧美另类| 狠狠色狠狠色综合日日小说| 精品一区二区亚洲| 97香蕉久久超级碰碰高清版| 狠狠色狠狠色综合日日五| 日韩美女主播视频| 国产欧美精品一区二区| 91久久久久久国产精品| 欧美日韩加勒比精品一区| 欧美性感美女h网站在线观看免费| 亚洲最大的网站| 亚洲成人a**站| 久久精品视频在线播放| 清纯唯美亚洲激情|