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

首頁(yè) > 編程 > HTML > 正文

html5中如何將圖片的絕對(duì)路徑轉(zhuǎn)換成文件對(duì)象

2024-08-26 00:20:19
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

將圖片的絕對(duì)路徑轉(zhuǎn)換成base64編碼,請(qǐng)看這篇文章

我們先來(lái)理解基本知識(shí)點(diǎn):

1. 理解HTML5中的FileList對(duì)象與file對(duì)象。

在HTML5中,F(xiàn)ileList對(duì)象表示用戶選擇的文件列表。通過(guò)添加multipe屬性,file控件內(nèi)允許一次選擇多個(gè)文件??丶?nèi)的每一個(gè)用戶選擇的文件都是一個(gè)file對(duì)象,而FileList對(duì)象則是file對(duì)象的列表。代表用戶選擇的所有文件。我們先來(lái)看一個(gè)簡(jiǎn)單的demo,看下file文件對(duì)象有哪些屬性。如下代碼:

<!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++) {          // 打印出單個(gè)文件對(duì)象的信息          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: ""           */          /*  如果上傳的是一張圖片的話,會(huì)返回如下信息的            File {              lastModified: 1466907500000              lastModifiedDate: Sun Jun 26 2016 10:18:20 GMT+0800 (CST) {}              name: "a.jpg"              size: 23684              type: "image/jpeg"              webkitRelativePath: ""            }          */          /*           因此 如果需要判斷該上傳的文件是不是圖像文件的話,可以根據(jù)type類型來(lái)判斷如下:           var file = files[i];           if (!/image///w+/.test(file.type)) {              console.log('該文件不是圖像文件');           } else {              console.log('該文件是圖像文件');           }           但是如果只讓傳圖片的話,可以在image控件添加一個(gè)屬性 accept="image/*" 即可;我們可以如下寫代碼:           <input type='file' multiple accept = 'image/gif,image/jpeg,image/jpg,image/png' />           */        }      }    </script>  </body></html>

2. 理解Blob對(duì)象

要點(diǎn):在HTML5中,新增一個(gè)Blob對(duì)象,代表原始二進(jìn)制數(shù)據(jù),其實(shí)file對(duì)象也是繼承了Blob對(duì)象。

Blob對(duì)象有兩個(gè)屬性,size屬性表示一個(gè)Blob對(duì)象的字節(jié)長(zhǎng)度,type屬性表示Blob的MIME類型,如果是未知類型,則返回一個(gè)空字符串。

請(qǐng)看如下代碼:

<!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>文件字節(jié)長(zhǎng)度: <span id="size"></span></p>      <p>文件類型:<span id="type"></span></p>    </div>    <script>      function showFileType() {        var file;        // 獲取用戶選擇的第一個(gè)文件        file = document.getElementById('file').files[0];        var size = document.getElementById('size');        var type = document.getElementById('type');        // 顯示文件字節(jié)的長(zhǎng)度        size.innerHTML = file.size;        // 顯示文件的類型        type.innerHTML = file.type;        // 打開控制臺(tái) 查看返回的file對(duì)象        console.log(file);      }    </script>      </body></html>

注意:Blob和File是可以同時(shí)使用的,可以使用FileReader從Blob中讀取數(shù)據(jù)。

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

<!DOCTYPE html><html>  <head>    <title>將以base64的圖片url數(shù)據(jù)轉(zhuǎn)換為Blob</title>  </head>  <body>    <script>      /**         * 將以base64的圖片url數(shù)據(jù)轉(zhuǎn)換為Blob         * @param urlData         * 用url方式表示的base64圖片數(shù)據(jù)         */        function convertBase64UrlToBlob(base64){         var urlData =  base64.dataURL;        var type = base64.type;        var bytes = window.atob(urlData.split(',')[1]); //去掉url的頭,并轉(zhuǎn)換為byte        //處理異常,將ascii碼小于0的轉(zhuǎn)換為大于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});        }      /*        * 圖片的絕對(duì)路徑地址 轉(zhuǎn)換成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中,新增一個(gè)Blob對(duì)象,代表原始二進(jìn)制數(shù)據(jù),其實(shí)file對(duì)象也是繼承了Blob對(duì)象。因此我們可以使用圖片的絕對(duì)地址轉(zhuǎn)換成文件對(duì)象。

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

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

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到HTML教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 天天曰夜夜操 | 成人一级片毛片 | 毛片毛片免费看 | 美女视频黄a视频免费全过程 | 亚洲天堂在线电影 | 中文日韩在线视频 | 欧美aaa| 国产精品国产三级国产在线观看 | 久久精品国产精品亚洲 | 欧美成人综合视频 | 久久亚洲网 | 国产精品成人av片免费看最爱 | 久久精品亚洲一区二区三区观看模式 | 成年免费大片黄在线观看岛国 | 久久久久久久久国产 | 日韩美香港a一级毛片 | 福利在线免费 | 性少妇videosexfreexx入片 | 成年免费观看视频 | 免费在线观看亚洲 | 欧美成人三级视频 | 精品一区二区三区免费毛片爱 | 亚洲小视频网站 | 狠狠操视频网站 | 羞羞答答视频 | 国产一级91| 国产精品毛片无码 | 欧美国产成人在线 | 澳门一级淫片免费视频 | 麻豆小视频在线观看 | 有色视频在线观看 | 亚洲影视中文字幕 | 一级网站片 | 在线天堂资源 | 在线视频 中文字幕 | 亚洲国产视频网 | 久久国产不卡 | 精品亚洲免费 | 久久99精品久久久久久秒播蜜臀 | 中文字幕在线看第二 | 免费观看的毛片手机视频 |