H5上傳圖片

一雪营、HTML

<input type="file" id="img-file"  capture="camera" multiple accept="image/*" onchange="handleFiles(this)"/>
備注:默認的樣式看起來很糟糕囊榜,設置opacity=0,然后再加上設計樣式但骨;(具體可參考百度圖片搜索)

1躲惰、input使用type=file進行文件選擇致份;
2、capture="camera"表示可以捕獲到系統(tǒng)默認的照相機础拨;
3氮块、multiple表示可以進行多選;
4诡宗、accept="image/*"表示匹配的文件類型滔蝉;accept="image/gif,image/jpeg,image/jpg,image/png,image/svg"可以看得更清晰;

二塔沃、文件信息

window.handleFiles = function (element) {
    if (!element.files[0]) {
        return;
    }
    for (var prop in element.files[0]) {
            console.log('file info '+prop+':'+element.files[0][prop]);
    }
}蝠引;

直接從File對象可以獲取名稱、修改時間蛀柴、類型螃概、大小等信息。

三名扛、圖片內容

1、FileReader.readAsDataURL
讀取圖片內容可以使用FileReader的readAsDataURL接口

var reader = new FileReader();
reader.onload = function (theFile) {
    document.getElementById('img-display').setAttribute('src', theFile.target.result);
// 讀取到的theFile.target.result是base64數(shù)據(jù)
};
reader.readAsDataURL(element.files[0]);

FileReader的接口參數(shù)為File對象或Blob對象茧痒,用于讀取文件內容肮韧。
主要的接口:
readAsBinaryString(Blob|File) :讀取結果為二進制字符串,每個字節(jié)包含一個0到255之間的整數(shù)旺订。
readAsText(Blob|File, opt_encoding) :讀取結果是一個文本字符串弄企。
readAsDataURL(Blob|File) : 讀取結果是一個基于Base64編碼的 data-uri 對象。
readAsArrayBuffer(Blob|File) :讀取結果是一個 ArrayBuffer 對象区拳。
主要的回調函數(shù):
onabort:讀取中斷時觸發(fā)拘领。
onerror:讀取出錯時觸發(fā)。
onload:讀取成功后觸發(fā)樱调。
2约素、上傳文件
一般情況下有兩種方式上傳文件:
2.1、通過File對象上傳圖片的二進制信息笆凌;
2.2圣猎、通過FileReader. readAsDataURL上傳Base64編碼對象;

四乞而、入坑

1送悔、accept="image/*"與accept="image/gif,image/jpeg,image/jpg,image/png,image/svg"
問題:使用前者在webkit內核瀏覽器可能導致選擇文件延遲;而使用后者則很容易漏掉一些圖片(尤其是一些奇葩的Android機型)
解決:沒有好的解決方法,只能根據(jù)應用場景進行取舍欠啤。

2荚藻、capture="camera"不可用
問題:在一款華為的機器上加上capture="camera"后,不彈出文件選擇框洁段;
解決:去掉capture="camera"应狱;(好尷尬,真心不知道怎么辦)

3眉撵、input file無法重復選擇一個文件
問題:在監(jiān)聽input的onchange時侦香,如果第二次選擇的與第一次選擇的文件相同,則不會回調onchange纽疟。
解決:如果確實需要回調罐韩,可以克隆一個同樣的input

inputElement.after(newSomeQa.clone().val(""));
inputElement.remove();

4、iPhone的照片被90°旋轉
問題:iPhone中保存的照片采用background-img的方式顯示時會被90°旋轉
解決:
4.1 采用img標簽顯示
4.2 讀取照片的EXIF信息在顯示做相應的旋轉處理(才用background-img顯示圖片在處理縮放截取時比較方便)

EXIF.getData(element.files[0], function () {
    var orientationPhoto = EXIF.getTag(this, 'Orientation');
    var lastDeg;
    if (orientationPhoto == 6) {
       lastDeg = 90;
    } else if (orientationPhoto == 8) {
       lastDeg = 270;
    } else if (orientationPhoto == 3) {
       lastDeg = 180;
    }
    document.getElementById('img-display').style.transform = 'rotate(' + lastDeg + 'deg)';
});

五污朽、附錄——EXIF
Exif是一種圖像文件格式散吵,在JPEG格式頭部插入了數(shù)碼照片的一些拍攝信息。
EXIF.js——https://github.com/exif-js/exif-js 蟆肆。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末矾睦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子炎功,更是在濱河造成了極大的恐慌枚冗,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蛇损,死亡現(xiàn)場離奇詭異赁温,居然都是意外死亡,警方通過查閱死者的電腦和手機淤齐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門股囊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人更啄,你說我怎么就攤上這事稚疹。” “怎么了祭务?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵内狗,是天一觀的道長。 經(jīng)常有香客問我义锥,道長其屏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任缨该,我火速辦了婚禮偎行,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己蛤袒,他們只是感情好熄云,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著妙真,像睡著了一般缴允。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上珍德,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天练般,我揣著相機與錄音,去河邊找鬼锈候。 笑死薄料,一個胖子當著我的面吹牛,可吹牛的內容都是我干的泵琳。 我是一名探鬼主播摄职,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼获列!你這毒婦竟也來了谷市?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤击孩,失蹤者是張志新(化名)和其女友劉穎迫悠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體巩梢,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡创泄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了且改。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片验烧。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡板驳,死狀恐怖又跛,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情若治,我是刑警寧澤慨蓝,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站端幼,受9級特大地震影響礼烈,放射性物質發(fā)生泄漏。R本人自食惡果不足惜婆跑,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一此熬、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦犀忱、人聲如沸募谎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽数冬。三九已至,卻和暖如春搀庶,著一層夾襖步出監(jiān)牢的瞬間拐纱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工哥倔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留秸架,地道東北人。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓未斑,卻偏偏與公主長得像咕宿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜡秽,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內容