亚洲香蕉成人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网站在线观看| 色婷婷久久一区二区| 久久精品国产免费观看| 亚洲美女精品久久| 中文字幕亚洲一区在线观看| 欧美大片va欧美在线播放| 国产精品国产三级国产专播精品人| 久久夜色精品亚洲噜噜国产mv| 国产噜噜噜噜久久久久久久久| 国产精品成人观看视频国产奇米| 美女视频黄免费的亚洲男人天堂| 一区二区三区精品99久久| 国产suv精品一区二区三区88区| 国产欧美一区二区| 欧美激情精品在线| 久久天堂电影网| 少妇精69xxtheporn| 久久九九免费视频| 久久躁日日躁aaaaxxxx| 亚洲色图综合网| 日韩av电影在线播放| 日本在线观看天堂男亚洲| 在线视频日本亚洲性| 欧美疯狂性受xxxxx另类| 国内精品久久久久影院优| 精品久久久久久久中文字幕| 亚洲一区二区三区成人在线视频精品| 正在播放国产一区| 欧美成人午夜激情视频| 精品欧美一区二区三区| 日韩亚洲精品视频| 欧美老女人性生活| 久热爱精品视频线路一| 亚洲欧美日韩第一区| 国产精品久久色| 91精品国产色综合久久不卡98| 亚洲激情免费观看| 一区二区三区高清国产| 亚洲一区二区三区乱码aⅴ| 色999日韩欧美国产| 日韩av网址在线观看| 蜜臀久久99精品久久久无需会员| 日韩va亚洲va欧洲va国产| 欧美性猛交xxxx| 久久国产精品久久久久| 久久人人爽人人爽爽久久| 91亚洲国产成人精品性色| 久久亚洲春色中文字幕| 久久久999国产精品| 91免费精品国偷自产在线| 国产综合在线视频| 亚洲电影免费观看| 欧美黑人又粗大| 欧美性猛交丰臀xxxxx网站| 亚洲区在线播放| 国产精品aaaa| 欧美日韩亚洲成人| 亚洲精品少妇网址| 久久精品国产亚洲| 国产精品视频精品| 91视频国产精品| 欧美午夜xxx| 久久久久久国产精品| 2019中文字幕在线观看| 伊人久久久久久久久久久久久| 97国产在线视频| 人妖精品videosex性欧美| 欧美中文字幕视频| 成人性生交xxxxx网站| 欧美视频在线观看 亚洲欧| 久久久天堂国产精品女人| 在线观看免费高清视频97| 国产69精品99久久久久久宅男| 成人免费观看网址| 成人午夜在线影院| 97成人精品视频在线观看| 久久久精品国产网站| 久久久久久久久久久av| 在线视频日本亚洲性| 日韩欧美综合在线视频| 综合av色偷偷网| 91精品国产九九九久久久亚洲| 欧美尺度大的性做爰视频| 777午夜精品福利在线观看| 久久久99免费视频| 亚洲欧美另类自拍| 91亚洲人电影| 国产成人福利网站| 九九热精品视频| 国产va免费精品高清在线观看| 欧美放荡办公室videos4k| 欧美激情免费在线| 日本午夜精品理论片a级appf发布| 91精品啪aⅴ在线观看国产| 欧美一级片免费在线| 91大神福利视频在线| 亚洲色图校园春色| 亚洲欧美日韩精品| 欧美国产精品日韩| 亚洲免费一在线| 亚洲精品国产精品国自产观看浪潮| 亚洲变态欧美另类捆绑| 日韩美女福利视频| 国产69精品久久久久99| 日韩av免费看网站| 国产区精品在线观看| 欧美日本国产在线| 亚洲国产精彩中文乱码av| 欧美www在线| 亚洲精品v欧美精品v日韩精品| 亚洲国产精品国自产拍av秋霞| 欧美一区视频在线| 全亚洲最色的网站在线观看| 国产精品视频网址| 亚洲精品456在线播放狼人| 97热精品视频官网| 日韩在线免费视频| 国产女人18毛片水18精品| 国产视频亚洲精品| 91精品成人久久| 91亚洲人电影| 成人在线观看视频网站| 亚洲国产精品人人爽夜夜爽| 91在线免费视频| 亚洲图片欧美午夜| 久久精品国产清自在天天线| 国产成人一区二区在线| 亚洲人成电影网站| 日本午夜在线亚洲.国产| 国产91免费观看| 亚洲天堂开心观看| 国产一区二区三区在线免费观看| 91精品久久久久久久久| 欧美日韩福利电影| 8050国产精品久久久久久| 亚洲欧美另类国产| 伊人精品在线观看| 高跟丝袜欧美一区| 日韩高清有码在线| 在线观看精品自拍私拍| 亚洲精品乱码久久久久久金桔影视| 91爱视频在线| 精品成人乱色一区二区| 欧美亚洲成人网| 国产精自产拍久久久久久| 国产在线观看精品一区二区三区| 国产精品成人aaaaa网站| 亚洲国产精久久久久久久| 色偷偷综合社区| 亚洲黄色有码视频| 欧美激情一区二区久久久| 5566成人精品视频免费| 蜜臀久久99精品久久久无需会员| 91成人在线观看国产| 亚洲男人天堂2019| 欧美精品久久一区二区| 精品偷拍各种wc美女嘘嘘| 欧美日本啪啪无遮挡网站| 日韩在线视频一区| 欧美日韩另类字幕中文| 国产精品对白刺激| 国产一区二区三区在线观看视频| 国产精品流白浆视频|