亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

移動(dòng)端H5文件上傳全解:解決iOS/安卓無(wú)法調(diào)用圖庫(kù)與拍照的問(wèn)題

移動(dòng)端H5文件上傳全解:解決iOS/安卓無(wú)法調(diào)用圖庫(kù)與拍照的問(wèn)題 做移動(dòng)端 H5 這幾年我最常被問(wèn)到的一個(gè)標(biāo)簽就是input typefile。表面看它就是個(gè)普普通通的文件選擇框可真放到 iOS 和安卓手機(jī)上點(diǎn)下去沒(méi)反應(yīng)、只有圖庫(kù)沒(méi)有拍照、彈出來(lái)一個(gè)瀏覽器文件管理器、安卓 App 內(nèi)嵌 WebView 直接不配合……各種奇怪表現(xiàn)簡(jiǎn)直能把人逼瘋。這篇文章就專(zhuān)門(mén)圍繞“前端 html inputfile 在 ios/安卓 無(wú)法選擇圖庫(kù)/拍照”這個(gè)問(wèn)題展開(kāi)把背后的原因、不同系統(tǒng)上的差異、以及我實(shí)測(cè)過(guò)能落地的方案一股腦寫(xiě)清楚。如果你是做移動(dòng)端 H5、活動(dòng)頁(yè)、Hybrid 混合開(kāi)發(fā)的同學(xué)這篇對(duì)你應(yīng)該會(huì)有不小幫助。1. 移動(dòng)端 file input 的真實(shí)痛點(diǎn)與適用場(chǎng)景1.1 這不是你寫(xiě)錯(cuò)代碼是瀏覽器內(nèi)核的差異很多同學(xué)第一次遇到這個(gè)問(wèn)題時(shí)第一反應(yīng)是“我代碼寫(xiě)錯(cuò)了”。其實(shí)大部分時(shí)候我們的 HTML 和 JS 寫(xiě)法在 PC 瀏覽器上完全沒(méi)問(wèn)題比如 Chrome 桌面版點(diǎn)擊input typefile就能彈出文件管理器選擇圖片后也能正常預(yù)覽上傳??赏瑯拥拇a放到手機(jī)上從 iOS Safari 到安卓 Chrome再到微信內(nèi)置瀏覽器和各種 App 的 WebView表現(xiàn)完全不一樣。這里面的根源在于移動(dòng)端瀏覽器的實(shí)現(xiàn)不是一個(gè)標(biāo)準(zhǔn)。iOS 上無(wú)論 Safari 還是內(nèi)嵌 WKWebView用的都是 WebKit 內(nèi)核安卓上 Chrome 是 Blink 內(nèi)核但國(guó)內(nèi)大量 App 的 WebView 是基于 Chromium 改的再疊加各手機(jī)廠商 ROM 自帶的瀏覽器和文件選擇器最終同一個(gè)input typefile標(biāo)簽會(huì)走完全不同的選擇流程。尤其是accept屬性和capture屬性不同內(nèi)核的解析策略不同甚至同一個(gè)系統(tǒng)版本里微信瀏覽器和系統(tǒng)瀏覽器表現(xiàn)都不一樣。所以我們?cè)谔幚磉@個(gè)問(wèn)題時(shí)不能只盯著一份“萬(wàn)金油”寫(xiě)法而是要先搞清楚當(dāng)前運(yùn)行環(huán)境到底是原生瀏覽器還是 WebView再針對(duì)場(chǎng)景做兼容方案。1.2 常見(jiàn)業(yè)務(wù)場(chǎng)景和踩坑癥狀我遇到過(guò)的大多數(shù)情況集中在下面幾類(lèi)業(yè)務(wù)里用戶頭像上傳需要讓用戶選擇“拍照”或者“從相冊(cè)選擇一張”。證件照、身份證上傳多數(shù)情況只允許從相冊(cè)選擇防止用戶現(xiàn)場(chǎng)拍一張模糊的照片。H5 活動(dòng)頁(yè)上傳截圖/評(píng)論圖片需要簡(jiǎn)單快捷地從圖庫(kù)選圖最好不用跳轉(zhuǎn)。企業(yè)內(nèi)部 App 內(nèi)嵌 H5 表單上傳附件、照片等。在這些場(chǎng)景里典型的表現(xiàn)癥狀我認(rèn)為可以歸納成下面幾類(lèi)癥狀常見(jiàn)出現(xiàn)環(huán)境初步原因點(diǎn)擊按鈕完全沒(méi)反應(yīng)安卓 App 內(nèi)嵌 WebView原生端沒(méi)有實(shí)現(xiàn) file chooser 回調(diào)有反應(yīng)但只彈出文件管理器沒(méi)有圖庫(kù)/拍照選項(xiàng)安卓部分 ROM 瀏覽器、部分 WebViewaccept屬性未生效或被忽略只有圖庫(kù)/文件沒(méi)有拍照選項(xiàng)iOS Safari 部分版本缺少capture或系統(tǒng)版本限制只有拍照沒(méi)有圖庫(kù)選項(xiàng)代碼中加了capturecameracapture 把拍照行為固定死了第一次能選圖第二次點(diǎn)擊沒(méi)反應(yīng)iOS WKWebViewinput 節(jié)點(diǎn)被移除或非用戶手勢(shì)觸發(fā)點(diǎn)擊選完圖無(wú)法預(yù)覽所有移動(dòng)端直接用了input.value本地路徑上面這個(gè)表格里的每一個(gè)癥狀我都在項(xiàng)目里真實(shí)遇到過(guò)。下面兩節(jié)我會(huì)分別拆解 iOS 和安卓?jī)蓚€(gè)平臺(tái)上的詳細(xì)情況然后再給一套我目前比較推薦的完整寫(xiě)法。2. iOS 端經(jīng)典問(wèn)題與處理方案2.1 為什么 iOS 上會(huì)出現(xiàn)“點(diǎn)不動(dòng)”和“彈不對(duì)”iOS 上的 Safari 和 WKWebView 對(duì)用戶手勢(shì)的要求非常嚴(yán)格。如果你是在一個(gè)異步回調(diào)里調(diào)用input.click()比如先請(qǐng)求接口、拿到某個(gè)字段后再觸發(fā)文件選擇框Safari 會(huì)直接判定這不是“用戶主動(dòng)手勢(shì)”從而靜默忽略這次點(diǎn)擊。很多同學(xué)在安卓上覺(jué)得沒(méi)問(wèn)題就上線了結(jié)果 iOS 用戶反饋點(diǎn)了沒(méi)反應(yīng)就是這個(gè)原因。另外一個(gè)常見(jiàn)問(wèn)題是accept屬性寫(xiě)得太“死”。比如有些同學(xué)為了限制圖片格式寫(xiě)了accept.jpg,.jpeg,.png這種寫(xiě)法在 PC 上是有效的但到了 iOS 上系統(tǒng)可能不會(huì)彈“照片圖庫(kù)”那個(gè)原生選擇器而是給你彈出一個(gè)文件 App 的瀏覽頁(yè)面。用戶看到后完全不知道該怎么選相冊(cè)里的照片體驗(yàn)上就基本等于“廢了”。還有一類(lèi)問(wèn)題來(lái)自 CSS 隱藏方式。為了做自定義上傳按鈕很多前端習(xí)慣給 input 加display: none然后在按鈕點(diǎn)擊事件里調(diào)用.click()。這種方案在 PC 上很順手但在 iOS 的某些 WebView 里display: none的 input 即使被.click()也可能不彈任何選擇器。穩(wěn)妥的做法是使用position: absolute; opacity: 0; width: 1px; height: 1px;這種“視覺(jué)隱藏但仍在布局中”的方式。2.2 iOS 端推薦寫(xiě)法和細(xì)節(jié)先給出一段我目前在 iOS 上驗(yàn)證過(guò)比較穩(wěn)定的基礎(chǔ) HTMLlabel forimageInput classupload-btn選擇圖片/label input typefile idimageInput acceptimage/* styleposition:absolute;opacity:0;width:1px;height:1px; /這里我推薦用label關(guān)聯(lián) input而不是在按鈕上掛 JS 事件再調(diào)input.click()。原因很簡(jiǎn)單label 是瀏覽器的原生用戶手勢(shì)控件點(diǎn)擊 label 就相當(dāng)于點(diǎn)擊 input天然繞過(guò)了 iOS 對(duì)手勢(shì)的檢測(cè)限制省去很多不必要的麻煩。如果你確實(shí)需要在 JS 里觸發(fā)點(diǎn)擊比如某些自定義組件沒(méi)法用 label那至少要保證兩點(diǎn)點(diǎn)擊事件回調(diào)里同步調(diào)用input.click()不要包一層setTimeout更不能在axios請(qǐng)求返回之后再調(diào)用。如果 input 是動(dòng)態(tài)創(chuàng)建的必須先document.body.appendChild(input)再執(zhí)行.click()并且確保沒(méi)有提前把 input 從 DOM 上移除。另外如果你希望用戶能自己選擇“拍照”還是“從相冊(cè)選擇”不加capture屬性就行。iOS 上acceptimage/*的 input 點(diǎn)擊后系統(tǒng)會(huì)彈出操作列表一般包含“照片圖庫(kù)”“拍照”“選擇文件”等選項(xiàng)。這個(gè)是 iOS 系統(tǒng)自帶的行為前端不需要額外處理。但需要注意如果你在代碼里加了capturecameraiOS 會(huì)直接跳過(guò)圖庫(kù)強(qiáng)制打開(kāi)相機(jī)。有些業(yè)務(wù)場(chǎng)景覺(jué)得自己已經(jīng)加了“拍照”按鈕結(jié)果用戶點(diǎn)進(jìn)去卻找不到圖庫(kù)入口就是這個(gè)屬性的影響。2.3 iOS 隱私權(quán)限對(duì)相冊(cè)選擇的影響iOS 14 之后系統(tǒng)對(duì)相冊(cè)的權(quán)限策略做了調(diào)整彈窗文案變成了“允許訪問(wèn)所有照片”或“選擇照片”。如果用戶選擇了“選擇照片”但沒(méi)勾選任何照片或者之前在權(quán)限彈窗里點(diǎn)了拒絕會(huì)出現(xiàn)一種很詭異的現(xiàn)象input 點(diǎn)擊后相冊(cè)界面能打開(kāi)但里面全空白或者只有“最近項(xiàng)目”空的分類(lèi)。遇到這種情況前端能做的不多因?yàn)檫@是系統(tǒng)級(jí)權(quán)限限制。我能給的建議是在選擇圖片的彈層或空狀態(tài)頁(yè)面里加一段引導(dǎo)文案告訴用戶“如無(wú)法選擇照片請(qǐng)到系統(tǒng)設(shè)置-隱私-照片中允許本應(yīng)用訪問(wèn)”并且提供一個(gè)按鈕方便用戶跳轉(zhuǎn)設(shè)置頁(yè)。在 Safari 里可以通過(guò)window.open引導(dǎo)但大部分 WebView 無(wú)法直接跳轉(zhuǎn)系統(tǒng)設(shè)置只能做文字提示。3. Android 端的差異與適配3.1 同一個(gè)標(biāo)簽各家的表現(xiàn)完全不同Android 的情況比 iOS 要復(fù)雜得多。首先安卓上的瀏覽器內(nèi)核碎片化嚴(yán)重Chrome、系統(tǒng)自帶瀏覽器、微信 X5 內(nèi)核、各類(lèi) App 內(nèi)嵌 WebView隨便數(shù)一下就有四五種。再加上華為、小米、OPPO、vivo 這些廠商會(huì)對(duì) AOSP 的文件選擇器做定制導(dǎo)致“一個(gè)input typefile標(biāo)簽十個(gè)設(shè)備可能給出十種點(diǎn)擊結(jié)果”。我遇到的最典型問(wèn)題是安卓 App 內(nèi)嵌 WebView 里點(diǎn)擊 input 完全沒(méi)反應(yīng)。這個(gè)問(wèn)題的根源通常不在前端而在原生端Android WebView 默認(rèn)沒(méi)有實(shí)現(xiàn)文件選擇的回調(diào)。原生開(kāi)發(fā)者需要重寫(xiě)WebChromeClient里的onShowFileChooser方法然后調(diào)用系統(tǒng)的文件選擇器或相冊(cè)再把結(jié)果通過(guò)ValueCallback返回給 WebView。如果這一步?jīng)]做前端再怎么折騰 HTML 和 JS 都沒(méi)用。所以如果是混合開(kāi)發(fā)場(chǎng)景我建議前端同學(xué)拿到任務(wù)后先跟原生同學(xué)確認(rèn)一句“你們的 WebView 支持 input file 嗎”這個(gè)問(wèn)題越早確認(rèn)后面踩坑越少。3.2 安卓上的推薦方案在安卓原生瀏覽器或 Chrome 里input typefile acceptimage/*一般都能彈出一個(gè)系統(tǒng)選擇器里面至少有“相機(jī)”和“文件”選項(xiàng)。但在內(nèi)置 WebView 里有的選擇器會(huì)直接漏掉“相冊(cè)”入口用戶只能從文件管理器里翻圖片體驗(yàn)極其痛苦。為了應(yīng)對(duì)這種差異我現(xiàn)在比較推薦的方案是頁(yè)面里明確區(qū)分“拍照”和“從相冊(cè)選擇”兩個(gè)入口分別用兩個(gè) input 來(lái)實(shí)現(xiàn)。input typefile idcameraInput acceptimage/* captureenvironment styleposition:absolute;opacity:0;width:1px;height:1px; / input typefile idalbumInput acceptimage/* styleposition:absolute;opacity:0;width:1px;height:1px; /第一個(gè)入口用captureenvironment意思是優(yōu)先打開(kāi)后置攝像頭拍照第二個(gè)入口只寫(xiě)acceptimage/*讓系統(tǒng)彈出圖庫(kù)或文件選擇器。這樣即使某個(gè)瀏覽器不彈“相機(jī)/圖庫(kù)”二選一的系統(tǒng)彈窗用戶仍然可以通過(guò)頁(yè)面上獨(dú)立的“拍照”和“相冊(cè)”按鈕完成操作。這里有一個(gè)細(xì)節(jié)capture的值在不同安卓版本上解析有細(xì)微差異有的寫(xiě)capturecamera有的寫(xiě)captureenvironment。我測(cè)試下來(lái)environment在更多設(shè)備上能正確調(diào)起后置攝像頭。如果你的業(yè)務(wù)里希望用戶自拍可以換captureuser但支持率不如environment穩(wěn)定。3.3 安卓 7 的本地文件訪問(wèn)限制安卓系統(tǒng)從 7.0 開(kāi)始對(duì)file://協(xié)議的訪問(wèn)限制變得非常嚴(yán)格。以前前端拿到input.value里的本地路徑比如/storage/emulated/0/DCIM/xxx.jpg還能直接塞到img src里預(yù)覽。現(xiàn)在這樣寫(xiě)基本都會(huì)失敗顯示不出來(lái)。解決辦法是永遠(yuǎn)不要依賴(lài)input.value當(dāng)圖片地址而是改用input.files[0]這個(gè) File 對(duì)象然后通過(guò)兩種方式生成預(yù)覽const file event.target.files[0]; if (!file) return; // 方式一用 URL.createObjectURL 生成臨時(shí)鏈接 const tempUrl URL.createObjectURL(file); document.getElementById(preview).src tempUrl; // 方式二用 FileReader 讀取成 Data URL const reader new FileReader(); reader.onload function(e) { document.getElementById(preview).src e.target.result; }; reader.readAsDataURL(file);這兩種方式在 iOS 和安卓上都通用。第一種性能更好適合大圖第二種兼容性最穩(wěn)并且可以直接用于預(yù)覽。上傳時(shí)你仍然可以繼續(xù)用new FormData()追加 File 對(duì)象不需要把 base64 字符串傳給后端除非后端接口明確要求二進(jìn)制轉(zhuǎn)字符串。4. 完整可落地的兼容方案示例4.1 頁(yè)面結(jié)構(gòu)設(shè)計(jì)綜合 iOS 和安卓?jī)蛇叺目游医o出一套現(xiàn)在項(xiàng)目里常駐的完整方案。頁(yè)面結(jié)構(gòu)上用一個(gè)按鈕區(qū)域承載兩個(gè)隱藏的 input用戶看到的按鈕文案根據(jù)當(dāng)前環(huán)境來(lái)調(diào)整。div classupload-area button typebutton idbtnCamera拍照/button button typebutton idbtnAlbum從相冊(cè)選擇/button /div input typefile idcameraInput acceptimage/* captureenvironment / input typefile idalbumInput acceptimage/* /這里我沒(méi)有給 input 加style隱藏而是放在頁(yè)面里后續(xù)通過(guò)全局 CSS 隱藏。注意不要用display: none我用的是input[typefile] { position: absolute; left: -9999px; opacity: 0; width: 0; height: 0; }這個(gè)隱藏方式的好處是input 仍然在文檔流里不會(huì)被瀏覽器判定為不可交互元素同時(shí)它又是不可見(jiàn)的不影響頁(yè)面美觀。4.2 JS 邏輯與文件校驗(yàn)接下來(lái)是 JS 部分的完整邏輯包括事件監(jiān)聽(tīng)、文件類(lèi)型校驗(yàn)、圖片預(yù)覽、以及處理 iOS 不能重復(fù)選擇同一文件的坑。const btnCamera document.getElementById(btnCamera); const btnAlbum document.getElementById(btnAlbum); const cameraInput document.getElementById(cameraInput); const albumInput document.getElementById(albumInput); const previewImg document.getElementById(preview); function handleFileSelect(event) { const file event.target.files[0]; if (!file) return; // 校驗(yàn)文件類(lèi)型 if (!file.type.startsWith(image/)) { alert(請(qǐng)選擇圖片文件); return; } // 校驗(yàn)文件大小大于 10M 直接攔截 if (file.size 10 * 1024 * 1024) { alert(圖片不能超過(guò) 10M); return; } // 生成預(yù)覽 const tempUrl URL.createObjectURL(file); previewImg.src tempUrl; // 這里可以繼續(xù)做上傳操作 uploadFile(file); // 清空 input 的 value保證同一文件再次選擇時(shí)能觸發(fā) change event.target.value ; } function uploadFile(file) { const formData new FormData(); formData.append(file, file); // 用 fetch 或 axios 發(fā)送到后端... } btnCamera.addEventListener(click, function() { cameraInput.click(); }); btnAlbum.addEventListener(click, function() { albumInput.click(); }); cameraInput.addEventListener(change, handleFileSelect); albumInput.addEventListener(change, handleFileSelect);這段代碼里最關(guān)鍵的一行是最后的event.target.value 。iOS 上如果你不重置 value用戶第一次選擇圖片后下次再點(diǎn)同一個(gè) input 選擇同一張圖change 事件不會(huì)觸發(fā)因?yàn)闉g覽器認(rèn)為文件沒(méi)有變化。這個(gè)坑在真實(shí)項(xiàng)目里非常常見(jiàn)。4.3 與原生 App 配合的“兜底方案”如果你的 H5 頁(yè)面是被包在 App 的 WebView 里而且原生端確實(shí)沒(méi)有實(shí)現(xiàn)onShowFileChooser那前端再怎么兼容都是無(wú)用功。這種情況下我建議直接走 native bridge 方案也就是前端通過(guò)window.webkit.messageHandlersiOS或者AndroidBridge安卓去調(diào)用原生自己的相冊(cè)/拍照模塊然后由原生把圖片的本地路徑或 base64 回傳給前端。這部分代碼需要跟原生約定接口簡(jiǎn)單示意如下function chooseImageByNative() { if (window.webkit window.webkit.messageHandlers) { // iOS 端調(diào)用原生相冊(cè) window.webkit.messageHandlers.chooseImage.postMessage({}); } else if (window.AndroidBridge) { // 安卓端調(diào)用原生相冊(cè) window.AndroidBridge.chooseImage(); } }原生選擇完畢后再通過(guò)回調(diào)函數(shù)把圖片地址傳給前端比如window.onNativeImageSelected function(base64) { ... }。這種方案雖然要多跟原生同學(xué)對(duì)一輪接口但它是混合開(kāi)發(fā)里最穩(wěn)的路徑不會(huì)受 WebView 內(nèi)核差異影響。5. 常見(jiàn)問(wèn)題排查與避坑清單5.1 我踩過(guò)的高頻問(wèn)題實(shí)錄第一個(gè)高頻問(wèn)題是 iOS 第一次能選圖第二次點(diǎn)擊無(wú)響應(yīng)。最開(kāi)始我也以為是 input 被移除或者變量被釋放后來(lái)一步步排查才發(fā)現(xiàn)就是change事件觸發(fā)后文件選擇器自動(dòng)關(guān)閉但 input 的 value 沒(méi)有被重置導(dǎo)致用戶選擇同一張照片時(shí)瀏覽器認(rèn)為文件沒(méi)變不再觸發(fā)。解決辦法就是上面代碼里的event.target.value 。第二個(gè)高頻問(wèn)題出現(xiàn)在安卓 WebView 中。前端點(diǎn)擊按鈕調(diào)用input.click()后頁(yè)面完全沒(méi)反應(yīng)連系統(tǒng)文件選擇器都不彈。用 Chrome DevTools 遠(yuǎn)程調(diào)試也看不到報(bào)錯(cuò)后來(lái)確認(rèn)是原生沒(méi)實(shí)現(xiàn)文件回調(diào)。這個(gè)問(wèn)題不是前端能修的只能通過(guò) bridge 或讓原生補(bǔ)onShowFileChooser解決。第三個(gè)問(wèn)題是用戶選了照片預(yù)覽圖卻一片空白。一開(kāi)始我以為是路徑問(wèn)題后來(lái)發(fā)現(xiàn)是后端返回的圖片地址帶了跨域限制跟 input 本身沒(méi)關(guān)系。前端預(yù)覽可以先直接用URL.createObjectURL(file)不要依賴(lài)后端的臨時(shí)鏈接等上傳完成后再用后端返回的正式地址替換。5.2 快速排查步驟速查表真機(jī)調(diào)試這個(gè)環(huán)節(jié)很多同學(xué)容易忽略。其實(shí)大多數(shù)問(wèn)題通過(guò)控制臺(tái)都能快速定位?,F(xiàn)象排查步驟大概率原因點(diǎn)擊按鈕無(wú)反應(yīng)在點(diǎn)擊事件里立刻console.log確認(rèn)代碼是否執(zhí)行input 未在 DOM、用戶手勢(shì)限制、WebView 未實(shí)現(xiàn)回調(diào)能彈選擇器但選完沒(méi)反應(yīng)在change事件里打印event.target.files監(jiān)聽(tīng)器未綁定、value 未清空導(dǎo)致不觸發(fā)選擇圖片后預(yù)覽空白檢查預(yù)覽地址是否為 blob/dataURL/還是本地 file 路徑直接用了input.value或后端圖片跨域只有拍照沒(méi)有圖庫(kù)查看 input 是否加了capture屬性capture 強(qiáng)制了相機(jī)行為刪除即可安卓 WebView 點(diǎn)擊無(wú)反應(yīng)找原生同學(xué)確認(rèn)是否重寫(xiě)onShowFileChooser原生 WebChromeClient 缺少文件選擇實(shí)現(xiàn)iOS 上選擇圖片權(quán)限彈窗空白讓用戶檢查系統(tǒng)隱私設(shè)置里的照片權(quán)限系統(tǒng)權(quán)限拒絕/限制訪問(wèn)5.3 幾個(gè)獨(dú)家的避坑心得再分享幾個(gè)文檔上不容易看到的經(jīng)驗(yàn)。第一multiple屬性在部分 iOS 版本上表現(xiàn)非常不穩(wěn)定如果你讓用戶多選圖片上傳邏輯要額外處理數(shù)組我在低版本 iPhone 上遇到過(guò)選擇多張后只能回調(diào)第一張的情況。業(yè)務(wù)上非必要不建議用multiple真要用就給用戶多做幾次單張選擇。第二有些安卓 ROM 的選擇器會(huì)把圖片文件“過(guò)一遍壓縮”你拿到的 File 對(duì)象大小跟原圖可能不一樣這時(shí)前端不要重復(fù)壓縮否則可能導(dǎo)致圖片質(zhì)量不可控。第三如果你的頁(yè)面里有 canvas 對(duì)圖片做壓縮或旋轉(zhuǎn)處理一定注意 iOS 上拍照的圖片會(huì)帶 EXIF 方向信息直接用 canvas 畫(huà)上去可能出現(xiàn)旋轉(zhuǎn) 90 度的問(wèn)題最好用 exif-js 這類(lèi)庫(kù)先矯正方向再繪制。這些坑聽(tīng)起來(lái)都不大但真上了生產(chǎn)環(huán)境每一條都可能是用戶投訴的導(dǎo)火索。6. 圖片上傳前的前端優(yōu)化細(xì)節(jié)6.1 大圖壓縮策略移動(dòng)端拍照的圖片動(dòng)不動(dòng)就 5M、10M直接傳給后端不僅慢還容易因?yàn)槌瑫r(shí)導(dǎo)致失敗。前端在上傳前做一次壓縮是很有必要的。我常用的方案是 canvas 壓縮先把圖片繪制到 canvas 上控制最長(zhǎng)邊不超過(guò) 1600px然后導(dǎo)出成 jpeg 格式質(zhì)量參數(shù)設(shè)在 0.8 左右。這樣一張 8M 的照片往往能壓到 300K 以內(nèi)而且視覺(jué)損失幾乎看不出來(lái)。function compressImage(file, maxSize 1600, quality 0.8) { return new Promise((resolve, reject) { const reader new FileReader(); reader.onload function(e) { const img new Image(); img.onload function() { let width img.width; let height img.height; const scale Math.min(maxSize / width, maxSize / height, 1); width Math.round(width * scale); height Math.round(height * scale); const canvas document.createElement(canvas); canvas.width width; canvas.height height; const ctx canvas.getContext(2d); ctx.drawImage(img, 0, 0, width, height); // 在 iOS 上需要處理 EXIF 方向這里先略過(guò)實(shí)際可引入 exif-js canvas.toBlob(function(blob) { resolve(blob); }, image/jpeg, quality); }; img.onerror reject; img.src e.target.result; }; reader.onerror reject; reader.readAsDataURL(file); }); }要注意的是canvas.toBlob在安卓和 iOS 的兼容性都還行但如果你要兼容很老的內(nèi)核可能需要用canvas.toDataURL再轉(zhuǎn) Blob。此外前端壓縮并不是萬(wàn)能的為了保證上傳圖片的最終可用性后端還是要有文件類(lèi)型、大小、尺寸的二次校驗(yàn)。6.2 多場(chǎng)景下按鈕文案與交互處理移動(dòng)端上傳功能交互文案也需要適配。比如同樣是“從相冊(cè)選擇”iOS 的相冊(cè)入口很直白安卓部分設(shè)備彈出來(lái)的選擇器里寫(xiě)的是“文檔”或“文件”用戶容易困惑。這種情況下前端可以在按鈕下方加一行小字提示“圖片上傳支持拍照或從相冊(cè)選擇”。如果是在安卓 WebView 里文字可以改成“請(qǐng)選擇圖片或拍攝照片”。另外在上傳過(guò)程中要給用戶明確反饋。我在項(xiàng)目里一般會(huì)做三態(tài)按鈕未選擇圖片時(shí)是“上傳圖片”選擇后變成“正在上傳”按鈕禁用并顯示 loading上傳成功后變成“上傳成功可點(diǎn)擊更換”。這個(gè)交互很簡(jiǎn)單但能極大減少用戶重復(fù)點(diǎn)擊導(dǎo)致的重復(fù)上傳。6.3 相機(jī)與圖庫(kù)雙入口的最終取舍回到標(biāo)題里最核心的問(wèn)題如何解決 iOS/安卓無(wú)法選擇圖庫(kù)/拍照。從我的實(shí)踐來(lái)看最省心的方式就是在頁(yè)面設(shè)計(jì)階段就放棄“一個(gè)按鈕搞定所有”的幻想。理想狀態(tài)是頁(yè)面上有醒目的“拍照”和“相冊(cè)”兩個(gè)入口。拍照入口的 input 帶captureenvironment保證能喚起相機(jī)。相冊(cè)入口的 input 只帶acceptimage/*保證系統(tǒng)能彈出圖庫(kù)。兩個(gè) input 都通過(guò)label或同步 JS 點(diǎn)擊來(lái)觸發(fā)。拿到文件后統(tǒng)一走壓縮、預(yù)覽、上傳、重置 value 的流程。這套方案我在微信 H5、普通瀏覽器、App 內(nèi)嵌 WebView 里都驗(yàn)證過(guò)不敢說(shuō)百分之百覆蓋所有機(jī)型但至少能解決 95% 以上的“無(wú)法選擇圖庫(kù)/拍照”問(wèn)題。剩下 5% 的極端情況基本就是沒(méi)有實(shí)現(xiàn)文件回調(diào)的原生 WebView那也不是前端單獨(dú)能解決的必須拉上客戶端同學(xué)配合。說(shuō)到最后還是想提醒一句移動(dòng)端這種看似簡(jiǎn)單的上傳功能其實(shí)牽扯了系統(tǒng)手勢(shì)限制、瀏覽器內(nèi)核差異、原生 WebView 配置、權(quán)限管理和前端狀態(tài)處理等好幾層?xùn)|西。遇到問(wèn)題別急著懷疑自己代碼先按環(huán)境把問(wèn)題定位清楚再對(duì)癥下藥。我自己現(xiàn)在做任何移動(dòng)端上傳需求第一件事就是先確認(rèn)運(yùn)行環(huán)境和原生能力第二件事就是準(zhǔn)備一個(gè)可以直接復(fù)用的雙入口方案。照著這個(gè)思路來(lái)你也能少走不少?gòu)澛贰?
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
人人爽夜夜操| 香蕉免费一区二区三区不读 | 久久国产精品视频| a天堂视频| 人人爱夜夜爱| 91成人18| 日韩三级视频一区二区三区| 欧美 日韩第一性色| 亚洲精品一区二区精品| 夜夜嗨AV蜜臀av| 97超碰9| 欧美视频一区二区在线| 97色97好| 青娱乐老司机视频| 色婷婷成人综合| 午夜毛片亚洲精品片国产久久久| 人妻-91porn| 嗯嗯啊好大| 亚洲成人在线高清| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 亚洲在钱| 久久精视频美日韩在线视频| 国产乱码久久久久久| 收看日本人日bb| 91久青| 亚洲一区二区AV| 操屄不卡视频| 欧美色干| 人妻久热在线| 婷婷久久五月综合激情| 7月婷婷综合| 国产在线播放成人免费| 久久婷婷在线观看视频| 欧美人与性动交a美精品| 欧美后入视频| 久久激情亚洲精品无码?V| 超碰无码五月97| www.91理论| 日本人妻天堂网站在线播放| 97人人操人人摸| 高清肉丝中文无码| 亚洲欧美日韩精品久| 天堂av最新电影网| 免费在线观看国内色片网站网址| 五月天伊人网| 欧美性色综合网| 无码不卡八戒| 超碰97最新人妻| 51一区二区三区| 操曰本熟女| 很黄很色的视频在线观看| 久草精品一区| 男人的天堂亚洲| 翔田千里无码一区| 少妇熟女一区二区三区| 超碰97最新人妻| 国产剧情AV不卡在线观看| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 久久女人视频| 午夜寂寞欧美| 日韩免费a级毛片无码a∨ | 色色婷婷丁香| 色综合一本| 亚洲色图 综合| 久久性爱大全| 国产视频人人网| 美日韩一卡二卡三卡免费人妻精品| 99人妻碰碰碰久久久久禁片| 亚洲色图8| 69综合网| 麻豆久久久一区二区| 久久在线观看免费视频| 加勒比无码毛片| 偷拍亚洲高清图片| 日韩人妻无码专区| xxxx网站亚洲精品| 99热在线播放| 一本色道久久综合熟妇| 嗯嗯啊啊啊好舒服| 日本岛国黄色网址| 亚洲精品国产熟女久久久久久| 91在线视频观看国产| 女人18精品一区二区三区| 99热超碰| 爱射综合| 人人操人人叉人人插人人| 狠日欧美| 日日日骚女人精品| 91美乳| 色色五月天婷婷| 色婷婷激一区二区三区| 明星性猛交ⅹxxx乱大交| 久久视频,这里只有精品| 91色噜噜狠狠| 欧洲综合视频| 伊人久久婷婷| 亚洲精品第一| 成人免费看吃奶视频网站| 日韩射图| 久久人体一区二区| 熟女精品一区二区在线观看| 欧美日本天堂| 日韩 人妻 精品| 99视频内射三四| 亚洲中文一区二区三区视频| 探花一区在线| 综合久久久久久久综合网| 97啪啪| 日本二三四区| 91精品人妻一品二品三品| 韩国嫰模上门援交视频| 五月天亚洲网| 在线情色电影 91大| 欧美视频第二页| 日韩在线女优天天干| 久久这里只精品99re66图| 欧美日韩在线国产在线| 国产欧美日韩精品中文| 蜜桃av综合网发布| 日韩精品 资源| 五月丁香激情啪啪| www.yw尤物| 日本黄 R色 成 人网站| 亚洲国产精品成人无码久久久 | 欧美综合97www| 婷婷视频在线免费观看| 91精品伊人久久久大香线蕉91| 美女国产一区二区久久| 日本污ww视频网站| 不卡免费av在线播放 | 日韩9区| 人妻娇喘 激情视频| 日本道人妻久久久在线不卡色视频| 91久久午夜无码鲁丝片久久人妻| 97久久精品国产| 麻豆九九九| 97久久国产| 欧美一级专区免费大片| 亚洲人精品午夜不卡| 久草毛片| 日韩肏逼视频| 天天射天天| 日本色色视频网站| 欧美强奸乱能| 久久免费精彩视频| 在线综合 亚洲 欧美中文字幕| 人妻一区二区三区| jiujiujiujingpin| 精品视频一区二区| 精品视频一区二区| h无码动漫在线观看| 亚洲最新a在线观看| 性爱av网站| 久久黄色网址| 免费看国产大AB| 野狼福利社区| 人人操肉肉| 韩国黄色片精品久久久| 日韩一级二级在线| 日韩射图| h无码动漫在线观看| 无码抄逼网| 久久久草成人网站久久久草成人久久久草久久久 | 久久99深爱久久99精品| 大香蕉草草| 久久黄片国产一区二区| 人人天天干干| 嗯嗯啊啊操死我| 色九九九综合| 69一区二区三区| 先锋色眉乱伦资源| 精品久久久久久亚洲| 亚洲丝袜色图| 四虎免费在线播放| 2017人人操,人人摸| 日本午夜精品理论片A级APP发布| 久久久工口| 久久熟女精品不卡一区| 超碰色男人操熟女| 亚洲熟妇自偷自拍另欧美| 亚洲男人的天堂AV| 九九视频黄色片| 日本在线一二| 无码九九九九| 口爆吞精在线观看| 欧美 传媒 麻豆 日韩 偷拍| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 午夜欧美J进J出白浆流出久久久| 欧美精品欧美精品系列| 中文字幕日韩专区精品系列| 日韩综合97P| 中文子幕一二三| 欧美A片中文字幕| 久久久久久亚洲精品不卡人乳 | 欧美日韩大黄片| 色妺妺在线视频| 免费网色网站| 日韩在线观看三级电影| 69人妻精品一区二区绯色| 亚洲drav色图| 奇米狠999| 麻豆性爱视频在线播放| 九九综合九九综合| 国产性感骚丝袜在线| 欧美草草高清日韩视频| 懂色AV蜜臀无码精品APP| 天天α片| 嗯啊视频免费在线观看| 2025亚洲男人天堂| 欧美 精品国产制服第一页| 五月丁香| 麻豆美女丝袜人妻中文| 欧美嫩性色| 国产夫妻性生活视频| 久久国产成人精品国产成人亚洲| 好吊妞转入那个网| 免费av在线播放二区| 天天插天天舔舔天天干| 中文字幕一区二区三区50路| 国产四虎在线| 韩三级a视频在线观看| 九月丁香婷婷| 丰满美女一级毛片在线播放| 亚洲天堂情色| 美女国产一区二区久久| 男人天堂毛片| 久久人妻视频网| 激情一区二区| 欧美三级一级| 日韩操逼性鲍| 超碰精品人妻狠狠干| av天堂手机版追回| 日本不卡一二区| www.久久99| 78超碰| 伊人青青一区成人视频在线观看区| 欧美中文综合| 亚洲一区二区三区麻豆传媒| 日韩不卡a级视频专区| 少妇高潮一区二区三区在线| 国产小视频91| 日本在线15p| 五月激情综合网| 成人一二| 久久禁| 婷婷五月成人| 人人操人人操人人人操| 91模特在线观看| 性爱视频久久| 五十路六十路七十路熟婆| 狠狠色一区二区中文字幕| 懂色AV蜜臀无码精品APP | 精品视频免费在线一区| 91天天综合在线| 国模限制级电影| 国模无码人体一区二区三| 手机av亚洲丝袜美腿日韩第一页二页| 婷婷五月天成人网| 在线播放成人高清免费视频 | 蜜臀99久| 亚洲97p| 99日精品欧美国产| 91美女视频。| 97精品97| 97色论| 欧美一区二区亚洲天堂| 国产精品第一区第一页| 欧美 日韩第一性色| 日本亚洲vr欧美不卡高清专区| 美女极品一区二区三区| 亚洲小说视频| 日本久久久久久久久| 成年女人黄网站| 婷婷五月天激情四射| 国产青青美女玩逼视频| 色鬼在线综合| 天天影视91看看| 中文字幕在线观看网页| 中国女人内射6XXXXX| 中文操逼字幕| 欧美精品激情| 粉嫩AV一区夜夜嗨| 亚洲激情综合| 色欲蜜臀AV| 日本一区二区中文字幕久久| 一区二区三区色综合| 亚洲另类综合欧美| 成人亚欧免费视频| 国产亚洲欧美每日在线| 火箭成精品视频884必出精品| 国产精品第一页国产大屁股视频免费区i | 中文字幕一区 二区三四五 区日 日骚| 欧美国产精品| A级毛片在线看免费| 97在线观看免费| 亚洲最大的综合性av| 日本色色色网站免费看不卡| 中文字幕久久亚州无码| 国产AV人人 夜夜人人澡| 亚洲另类综合欧美| 青青操青娱乐| 久久9精品视频| 综合自拍| 亚洲熟女中文字幕在线| 日韩熟女操逼| 日本1区2区不卡视频| 在线免费观看高清无码视频| 久久久新亚洲AV| 欧美999| 久久激情婷婷| 超碰在线91| 国产精品国产精品国产| 久久精品国产亚洲AV先锋| 午夜毛片亚洲精品片国产久久久| 人人妻人人爽人人精品| 大逼色网站| 日曰骚久久精品| 四虎精品亚洲| 一本色道人妻久久| 俺也射| 吊色| 丰满人妻一区二区中文| 91中出视频| 综合网少妇| 色九九久九九| 亚洲欧美首页| 蜜臀久久99精品久久久久| av天堂电影网| 逼操网站| 超碰成人公开| 99人人干| 精品国产乱码久久久久久影片| 亚洲色天堂日韩中| 熟女色图在线| 欧美丝袜美女电影一二三四区| 蜜臀AV成人精品蜜臀| 情色五月天网| 国产欧美成人精品| 日韩99999| 超碰在线人妻中文字幕| 黄色视频特级毛片| 亚洲欲色9532548967一区| 午夜天堂精品久久| 97超碰中文字幕| 午夜一区| {男男暴菊gay无套网站| 99久久久无码国产精品性男| 亚州宗合另类| 久久大精品乱码视频人妻熟女| 9999久久久久| 色色毛片| 中文字幕jul-617人妻熟女| 麻豆久久视频在线地址| 中文一区二区婷婷视频| 91+欧美| 97超碰在线资源网站| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 丁香五月婷婷啪啪| 亚洲精品骚逼| 亚洲毛片基地专区| 操逼操网| 60秒免费小视频| 91亚洲网站| 国产亚洲精品久久久久小| 色综合网1| 九九精品热| 天天亚洲综合| 国产h小视频在线观看免费| 日本日逼高清| 婷婷国产精品九区| 国产99999| 日韩欧美综合激情| 日本熟妇熟色97一本在线观看| 天天射夜夜| 1769成人国产精品视频| 久久性爱视频| 青青操日韩| 国产日韩欧美中文在线播放| 欧美亚洲丝袜美女电影| 欧美性暴力猛交| 久久av一级av少妇av高潮| 国产欧美一区二区| 91精品国产一区三一| 嫩草影院在线观看精品 | 亚洲黄网在哪免费看| 少妇500双飞99| 五十路三区在线| 亚洲综合精品国产一区| 久久久久深夜无码| 黄片在线免费在线观看| 亚洲熟妇熟在线电影视频| 久久久久久久久久9| wwwcaobibi| 国产麻豆一区二三区| 午夜爽爽爽在线观看永久入口姬片| 久久久久久性爱视频| 国产三级片在线观看| aaa一级黄片| 国产外初女出血视频| 91精品啪在线观看国产城中村| 97日视频| 日韩欧美aⅴ综合网站发布| 97干色天堂| 久草精品国产99| 亚洲精品久久久久久久久豆丁网| 国产精品福利视频| 大香蕉AV丝袜| 亚洲AV麻豆Aⅴ无码电影一| 男人下部插入女人下部| 欧美乱伦专区| 国模不卡一本二本三电影| 人人操人人爽人人操人人| 日韩天堂av电影在线观看| 色色毛片| 国产免费一区| 国产 丝袜 欧美中文 另类| 国产人妻精品一区二区三区秋霞 | 91人人操| 欧美少妇高潮久久91| 99视频这有这里有精品| 九9热伊人| 午夜高清成人在线视频| 91亚洲网| 91l欧美在线| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 成人性爱美曰韩| 蜜臀99久久精品| 久久婷婷五月综合| 搡老女人老熟女91| 加勒比综合a∨| 色99在线| 国产美女在线精品免费看| 成人久久无码www| 高清国产精品福利网站| 超碰碰97| 91精品伊人久久久大香线蕉91| 啊啊啊啊啊啊啊在线| 最近2019中文字幕国语免费版| 国产免费内射视频| 97玖玖人妻| 亚乱色| 久久香蕉国产线看观看亚洲女人 | 做爱A级亚欧| 欧美激情内射| 北条麻妃性愛视频| 看一级黄色视频| 超碰在线欧美性爱激情| 亚洲女优有码无码高清| 91人妻视频| 无码少妇精品一区二区60岁老人| 国产精品不卡一区二区三区av| 偷拍综合亚洲| 久操黄色视频| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 亚洲欧美自拍偷拍| 97久久国产精品女不卡| 亚洲欧洲无码一区夜| 色五月激情网| 日本在线激情一区二区三区| 懂色中文一区二区三区| 怡红院成人视频| 1204金沙人妻懂旧版免费| 欧美日本中字另类在线| 91啦人妻| 天天做天天爱| 日日骚av| 久久人妻无码毛片A片麻豆| 97九色人妻| 亚洲各类熟们中文字幕| 天天弄天天操| 日本人妻伦在线中文字幕| 老鸭窝成人| 青青草色插素人| 亚洲最大91网| 婷婷五月天av| 成功精品影院| 欧美黄色大香蕉一区二区| 成人av在线播放| 99热线麻豆| 青青草一区二区三区四| 久草综合视频| 北条麻妃性愛视频| 欧美九9 9 9| 亚洲欧美精品一区天堂久久| 国产精品国产拍高清AV| hd成人一区二区在线| 97无码视频在线播放| 97欧美在线| 午夜精品久久久久久久第一页按摩| 97伪v| 97国产色图| 91欧美性| 青青操视频在线| 亚洲一区二区 麻豆传媒| 亚州情色j区| 欧美成人都市人妻| 亚州色交| 久久超碰爱| 国产一区二区啪啪视频| 91性高潮久久久久久久久| 久久久久久久久成人av解说| 不卡一区二区日本视频| 人人看人人摸人人色| 亚洲成人久久美女| 丁香五月天堂网| 日本岛国黄色网址| 五月婷婷激情网| 亚洲图片欧美91N| 欧美中文字幕男人天堂久久精品 | 久热在线精品免费观看| 国产精品久久久久久照片| 精品偷拍13p欧美dodk视频| 欧美成人A天堂片在线观看| 青椒国产97在线熟女| 日逼视频日本| 色吧五月| caopeng97| 国产av青草| 大吊色| h色99999| 78精品| 999综合网| 中文字幕一区二区在线日韩精品| 日韩性爱再线视频| 99视频内射三四| 国产精品小视频一区二区三区| 怡春苑东京热| 超碰这里有精品| 欧美+日产+中文| 国产精品精品系列在线观看| 中文字幕精品一区二区精| 国产18精品亚洲精品| 少妇超碰在线| 久热精品色情| 四虎AV在线播放| 中文字幕国产在线天堂| 可以免费观看的日韩av毛片| 国产精品久久久久久久黄无码| 无码9区| 啊啊啊啊二区好大| 欧洲亚洲人妻无码久久三区四区| 日韩免费福利在线观看| 色婷视频| 精品国产久久乱码| 欧美色偷偷| 国产精品一级毛片不卡视| 欧美性爱97超碰| 四虎在线播放| 夜夜骑夜夜操| 国产黄色av大片网站| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲爽图| 日本三级大片| 久久女同性恋一二区| 久久老熟女| 2019天天干| 91在线无码精品秘 软件| 强上我不卡卡| 先锋女优在线观看视频| 欧美亚洲日本激情在线| 人人妻人人色| 国产精品视屏| 国产精品视频麻豆入口| 91色噜噜狠狠| 亚欧美综合网| 欧美精品自慰系列寂寞少妇| 日韩情色视频| 天天综合~91| www.狠狠| 99日视频在线免费| 欧美性巨大╳╳╳╳╳高跟鞋| 男人的天堂激情| 91性网| 国产精品一区二区 尿失禁| 色老汉色| 日韩性爱小视频| 午夜精品久久久久久久男人的天堂 | 91丨熟女丨丰满熟女| 久久超碰爱| 91亚洲最新在线| 国产区性爱在线视频秋霞豆| 亚州色国| 国产视频一区二区三区在线免费观看| 91丨国产丨白浆| 精品视频一区二区| 99超碰色| 大香蕉欧美| 精品区9| 怡红院成人视频| ?亚洲伊人伊成久久人综合网| 制服中出中文人人精品| 欧美亚洲另类在线蜜桃| 91精品免费| 人人人摸人人| 日韩人体偷拍| 女性91网站| 蜜桃精品一区二区三区ww| 日韩人妻丝袜中文字幕| 五月天激情小说网| 日本一区二区不卡| 熟女日韩| 国产一区二区三区久久久精品| 人妻无码后入| 丁香六月激情| 死我十八禁| 国产视频一区二区免费| 大香蕉懂9| 女优免费一区二区永久| 亚洲成人黄色在线观看| 亚洲综合图色在线| aaaa少妇高潮大片| 丝袜综合网| 啊啊啊啊啊啊啊国| 亚瑟国产精品久久无码| 1000午夜黄色| 日日夜夜干| 人人操人人摸人人骑| 大香蕉伊在线久草麻豆天堂故事| 乱伦图av| 精品传媒在线一区| 一区久久久二区| 久久69精品久久久久久久| 人妻素股| 91蜜臀熟女| 淫荡网址| 爱丝福利| 超碰超碰95| 亚洲国产成人福利在线观看| 欧美日韩人妻精品一区二区三区 | 97视频在线播放| 亚洲激情色片| 亚洲天堂久久| 九X超碰| 熟女欧美日韩综合婷婷| 人人操人人肉久久精品| 欧美国产日韩清纯唯美| 96久久久久久久| 五月婷婷综合网| 俺也射| 精品在线观看视频在线| 亚洲双插| 亚射在线| www网站黄| 青青草原综合久久大伊人精品| 中文字幕av片| 欧美99| 久久狠狠色噜噜狠狠狠狠97| 精品免费1| 精品国产乱码久久久久久口爆网站| 易易A毛视频| 天天草AV| 久久一二三级一一一| 亚洲黄色影视| 丝袜美腿制服人妻二区中文字幕| 91骚熟女| 夜夜夜夜久久久久| 五月天色电影| 99热精品在线| 色99视频| 男人高清无码一区二区| 国产综合日韩伦理| 久久久久久久97| 色哟哟精品1精品2| 国产成人亚洲精品自产在线| 国产精品无码在线| 久久社区一区二区三区| ji熟女.com| 国产在线播放成人免费| 欧美AB在线| 麻豆亚洲AV成人无码久久精品| 色妇91| 国产一区二区久久| 韩国三级三级BD在线| 男人天堂2012| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 三级日韩一区二区三区| av中亚| 97在线播放 | 成人久久精品| 欧美 日韩 婷婷 五月| 亚洲情色1区| 中文自拍欧美影视| 国产一区二区av综合| 无码免费精品高清| 97摸视频| 高清无码 国产精品| 日本精品网站在线中文| 欧美1区二区三区公司| 综合久久久久久久久91| J?P?NESEHD熟女熟妇伦| 操屄日韩| 中文字幕精品一区二| 国产亚洲精品久久久久小| 日韩在线一区高清在线| 亚洲精品性爱片| 高清无码 国产精品| 亚洲最新a在线观看| 国产强上视频在线观看| 99熟女| 夜夜爽33333| 性色乱AV一区二区| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 亚洲欧美天堂在线| 日韩天天本| 99后入| 天美久久久久| 中文字幕欧美丝袜07资源| 丝袜美腿91| 欧美欧美少妇| 丰满人妻一区二区三区蜜桃视频| 97亚洲自在精品在线观看| 国产91美女视频| 成人怡红院| 秋霞午夜成人福利片片| 免费av高清无码| 日韩色欲久久一二三四区| 日日操丁香五月天| 四虎影院成年人片| 在线观看一卡二卡| 91美女丝袜诱惑视频| http://qxhbdz.com| 自拍盗摄一区| 天天操天天看| 欧美色图欧美| 人人操人人摸人人看人人插| 人妻少妇被猛烈进入中| 九九色综合| 97 超碰 人人做 人人爱| 色狠狠综合噜一二三区| 久久视频少妇美女| 精品一区二区三区蜜桃| 天天看天天干| 精品一二三区久久AAA片| 九九热最新| 日欧毛片久久| 少妇三p| 国产精品99精品视频网站| 亚洲精品国产精品乱码不99| 成人夜夜爽| 欧洲乱码视频| 超碰地址久久| 欧美综合娱乐久久| 丁香五月激情啪啪| 97操在线| 欧美日韩中文视频播放| 韩国成人精品久久久免费看| 天天干天天爽| 亚洲诱惑天堂 | 日韩一级片| 性性欧美| 在线观看黄色电话| 小草精彩毛片| 亚洲美女高潮喷水视频| 国模无码人体一区二区三| 婷婷在线视频| 国偷自 一区二区| 五月丁香激情四射| 香蕉久久国产AV一区二区| 99re在线观看| 男人的天堂99| 一级A啪啪啪啪| 美骚妇av高清在线| 久久99国产精品| 熟女六十路| 裸体1区| 91操熟女| 最近2019中文字幕国语免费版| 国产日韩精品一区二区三区| 超碰9 7女人 | 久久国语| 亚洲?V无码专区在线电影| 夜夜中出国产| 极品人妻少妇综合| 人妻二区| 超碰在线人妻不卡| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 成片免费播放| 日本五区不卡| 国产AV超爽| 亚洲91大片| 精品性爱一二三区| 日韩丨制服丨中文|在线| 国产久久成人| 天天插夜夜爽| 久久亚洲AV无码专区首页| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 亚洲丝袜诱惑| 天天综合色电影| 午夜超碰| 一二三四免费视频| 中国一级αV| 熟妇在线视频一区二区| 91亚洲情色| 五月天色色色| 日日摸日日碰夜夜爽视频| 亚洲天堂,男人| 蜜臀AV午夜精品久| 久久久久免费少妇| 91久久久亚洲| 亚洲淫乱骚妇AV| 国内偷自视频区视频综合| 偷拍色图| www.zbzhongsen.com| 一本大道久| 黄片免费看的| 另类成人首页一区| 亚洲国产欧美一区二区潘金莲| 亚洲欧美性生活| 亚洲无 码A片在线观看麻豆| 久久久av爱| 啪啪啪东京| 国产小炒后入式| 国产精品免费1区2区视频| 伊人大香蕉在线| 亚洲 小说 欧美 激情 另类| 99re只有精品| 亚欧国产无码精品在线| 蜜桃臀av一区二区| 欧美男人一区| 黄片免费日韩| 美女主播色欲91抠b在线播放| 天天做日日做| 易易A毛视频| 黄页大片在线观看| 成人av福利在线观看| 十八禁电影伊人网| 麻豆国产尤物AV| 啊啊啊啊好爽好舒服一区二区易域| 天美麻豆精品视频99| 亚洲精品无码成人久久久99| 啊啊啊 在线| 99热精品在线观看| 久久精品国产亚洲妲己影视| 日本久久999| www.av家庭乱伦| 亚州欧美一区| 色色无码| 美女尤物福利视频| 翔田千里一区二区三区奶水| 黑人粗大V S日韩女优视频| 国产精品青青草| 国产一区二区精品久久99| 97欧美资源| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 美国aaaaa一级黄片| 97超碰9| 歐美性天天| www99热| 99久久久er直播网址| 青青草久草AV| 青青草日本无码| 欧美日韩中文亚洲v在线综合| 天天射日日干| 中文字幕诱惑制服人妻丝袜美丝袜美 | 亚洲色图 欧美热图 清纯唯美 另类自拍 | 2019男人的天堂| 久久大线蕉一区| 欧美极品女人的天堂| 国产精品一二三在线看| 18禁无码永久免费无限制| 久久激情四射婷婷丁香五月天| 午夜精品视频777| 日韩成人在线性爱视频| 欧差乱伦二三| 久久线上视频免费看| 国产久久视频| 国产精品老熟女一区二区| 岛国AB视频| 亚洲熟女精品| 欧美桃色网| 亚爽爽爽爽爽爽爽爽| 北京专精特新企业招聘信息| 五月婷婷激情网| 色综合天天| 粉嫩av在线| 人妻丝袜一区二区三区在线| 超碰精品| 69人妻人人揉人人躁人人精品| 亚洲操操操| 18禁超污无遮挡无码免费网| 顶级丝袜熟女一区二区三区| 欧美gv在线观看| 国产日韩久久| 女优大全 - 91n| 少妇人妻在线| 97超碰这里只有精品| 超碰 另类 欧美| 超碰 另类 欧美 | www.91逼逼.com| 中国AAAAAA黄色片| 亚州91| 亚洲图片 欧美电影| 天天综和| 男人的天堂成人的社区| 亚洲天堂人妻一区二区| 熟女丰满人妻一区| 日本理论在线| 人人色人人操在线| 久久久久九九九| 国产福利av精彩对白| 激情五月天插| 黄色一区二区秘书性感| 秋霞蝌科网日本一区| 在线a v| 成年女人黄网站| aaaa少妇高潮大片| 网页导航五月天免费一二三区| 欧美性爱系列| 亚欧性爱ab| 国产女人成人精品视频| 综合自拍| 一区二区三区欧美激情| 成年女人18级毛片毛片免费观看| 美國A片| 色五月婷婷网| 日本熟女中文字幕一区| 亚洲成人无码影院| 五月丁香婷婷啪啪| 粉嫩国产精品久久粉嫩| 粉嫩国产精品久久久| 爱啪精品一区| 日韩欧美偷拍美女视频| 国产成人欧美一区二区三区的国产| 国产成人 综合亚洲 天堂| 久久中文字幕一区不卡| 国产高清MV操逼视频| 任你艹| 欧洲乱码一区二区| 欲射影视| 91天堂| 偷拍综合网| 麻豆国产视频精品观看| 在线岛| 国产家庭乱伦网址| 亚洲精品丝袜-不卡成人免费……| 中文字幕大片三级狠狠干| 99热免费精品| 婷婷九月丁香| 九九九九精| 一线黄色免费性爱片| 九九综合| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 九热超碰| 欧美91变态| 熟女人妇一区二区三区| 在线99热| 色狠人在线99| 天天欲望网| 国产精品一区二区亚洲人成毛片 | 操少妞在线视频| 色欧美综合| 玖玖资源综合在线视频| 亚洲日韩成人性爱视频| 天美传媒国产原创中文字幕亚洲欧美另类 | 大香蕉伊然在亚洲91| juliaann丝袜| 95自拍视频在线观看| 超碰久热| 97色涩| 综合另类| 日本一级二级三级网站| 中文字幕88av在线| 亚洲在钱| 美国日韩黄片| 99久久久久| 中文字幕十五区| 国产高清亚洲日韩一区| 五月大香蕉| 加勒比海成人视频网| 91网站18| 九九热精品在线| 九七毛片九九毛片| 精品无码秘 人妻一区二区| 你想操日本小逼吗| 超碰97最新人妻| 免费岛国一级片| 操99| 人妻素股| 日韩无码黄色片| 99999精品成人| 中文字幕蜜乳av| 3D污黄视频在线观看| 97操97色| 人妻丝袜日本| 日本精品第一视频在'| 男人精品天堂一区| 97超碰欧美手机| 手机看av网站在线看| 4虎在线视频| 乱伦av麻豆| 9精品在线| 欧美精品久久96人妻无码| 色婷婷综合网站| 另类老少妇| 人人人人插| 久久精品视频在线观看| 中文字幕精品一区二| 九九热九九热| 九九九九九九九九九国产精品| 色婷婷五月综合| 五月天人妻综合| 国产美女mm131爽爽爽爽| 射丝袜大香蕉| 美女午夜福利免费视频| 日本少妇va7777| 极品欧美一区二区三区| 东北黄色电影| 亚洲A曰本VA欧美VA视频| 116美女午夜| 中文字幕三四五区| 欧洲无码一区二区| 富女玩鸭子一级毛片| 久九九九九九九热| 欧美A片中文字幕| 亚洲棕合电彰| 97超碰欧美中文字幕| 熟妇人妻精品一区二区视频色欲| 97精品视频在线播放| 国产 v乱码一区二| 日本亚欧爱爱| 综合色99| 97干97色| 最新中文字幕av| 色婷婷国产精品一区在线观看| 中文字幕二区日韩天堂 | 久久偷偷色综合蜜桃| 婷婷五月天激情网| 超碰社区97| 久久怡红院| 久久大香蕉97| 国产高清1234区| 91福利网在线观看| 青青草精品| 家庭乱伦性爱av| 福利天天都操| 精品久久久中文字幕不| 一起草日韩| 91痴汉| 日日夜夜骚| 国产区性爱在线视频秋霞豆| 久久9免费视频| 调教熟妇 久久久久久| 久久久97| 亚洲吊色| 在线不卡视频| www国产无码| baiduhicn.com。| 欧美专区日本专区| 国产熟女精品一区二区| 日本97久久久精品| 一个人免费HD91视频| 97色综合中文网| 亚洲中文字幕乱码无码一区二区 | 91超级碰| 久久精品国产亚洲AV先锋| 超碰国产情侣自拍网| 毛片久久| 国内一区二区三区| 91红杏| 久久伊人大香蕉| 亚洲色交| 玖玖超碰熟| 和协无码影院| 色色色热| 超碰人人操97碰| 人妻娇喘 激情视频| 欧美日动态视频| 人妻丝袜无 码视频专区| AA级电影三区| 好吊色综合| 91艹| 97视频在| 成人婷婷丁香| 国产成人午夜视频网址| 亚洲色狠| 粉嫩小泬久久久一区二区| 自拍偷拍2025在线观看| 亚洲精品尤物yw在线影院| 啊啊啊好想要| 国产精品夜夜夜| 屌妞视频久久久久久久| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 国产精品一区二区三区在线| 夜夜久久| 人妻一区二区三区| 免费岛国一级片| 久久精品六区| 狠狠色一区二区中文字幕| 亚洲操逼无码| 午夜超爽| 天天日天天操天天射河南省| 亚洲欧美97| 日日干夜夜骑| 91nbbbbbb| 丝袜喷水在线| 婷婷亚洲综合| 日韩中文字幕视频在线观看| 国产日韩欧美亚洲精品95| 91美女在线| 欧美色吧综合| 日韩91网| 青青五月天| 91热色| 日韩欧美中文字| 大香蕉男人的天堂| 日本人体九九九九九九| 五月婷婷六月丁香| 大香蕉黄色一区| 欧美黄色大香蕉一区二区| 久久美女国产| 国产精品探花色| 韩三级a视频在线观看| 永久免费观看的毛片的网站| 日本精品五区| 亚洲中文字幕熟女| 久久久999国产精品| 天堂精品一区| 国产夫妻性生活视频| 九九九九一区| 色哟哟精品1精品2| 亚洲欧洲色情高清| 日韩精品人妻中文字幕有码午| 九九久久精品| 国产剧情一区在线观看| ss久久| 偷拍欧美激情| 殴美牲| 91九九九逼| se,,,亚洲欧美| www.天天干| 日韩精品 资源| 6080yy午夜理论三级一区二区三区无码 | 女人一区| 欧美亚洲厕所精品偷拍91| 亚洲少妇激情视频| 欧洲精品区| 好屌色综合| 欧美一区二区传媒| 国产精品国产| 家庭乱伦麻豆| 亚州精品丝袜-不卡成人免费| 91久久午夜无码鲁丝片久久人妻| 欧美亚男人的天堂| 91最新综合| 91N综合网在线| 男人天堂2019| 可免费观看的av毛片中日美韩| 黄色操人| 2019天天干天天操| 亚洲第一无码播放立川理惠| 日韩一区二区精品视频| 91夜色chaopeng| 天天做天天爱天天爽AV| 蘋果手機免費看成人Av| 国产后入清纯| 天天插网| 天天谢天天干| 中文字幕一区二区日韩网| 十八禁啪啦拍视频无遮挡| 熟妇最新先锋一二三区|