精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

30分鐘教你使用NodeJs開發(fā)自己的圖床應(yīng)用

開發(fā) 前端
本篇主要介紹如何使用nodeJs開發(fā)一個圖床應(yīng)用。該項目對于測試和個人服務(wù)型網(wǎng)站非常實用,大家可以基于此擴展出更強大的應(yīng)用。

前言

本文主要復(fù)盤筆者的nodeJS,通過一個線上的實戰(zhàn)案例來總結(jié)node生態(tài)常用的技術(shù)點和最佳實踐。后面會花費大概一個月的時間輸出3篇以實戰(zhàn)為主的nodeJs項目,本文是第一篇,主要介紹如何使用nodeJs開發(fā)一個圖床應(yīng)用。該項目對于測試和個人服務(wù)型網(wǎng)站非常實用,大家可以基于此擴展出更強大的應(yīng)用。本文的圖床項目主要使用Koa進行開發(fā),不熟悉的可以先研究一下koa官網(wǎng),或者看筆者之前寫的nodeJS的文章。

你將收獲

  • Node應(yīng)用基本架構(gòu)方式以及開發(fā)NodeJS應(yīng)用的流程。
  • Koa + Koa-Router + glob + Node基本API使用。
  • 跨域解決方案Koa Cors的使用介紹,以及如何和前協(xié)作跨域。
  • 基于@koa/multer封裝文件上傳中間件。
  • 使用React開發(fā)前端應(yīng)用以及xui基本使用。

正文

首先圖床應(yīng)用要保證不同域下都可以訪問我們的圖片資源,不存在跨域問題,并且可以支持在不同域下的應(yīng)用都可以上傳圖片到圖床上,如下圖所示:

圖片

結(jié)合上圖我們可以先做應(yīng)用的需求分析:

圖片

以上是一個非常簡單的圖床應(yīng)用的需求分析,我們接下來將根據(jù)這個分析來搭建項目架構(gòu)并開發(fā)我們的應(yīng)用程序。在開始之前我們先看看簡單的實現(xiàn)效果:

  • 訪問并上傳圖片。

圖片

  • 獲取圖片鏈接地址。

圖片

  • 刪除圖片

圖片

這個展示界面只是一個例子,我們可以通過前端的方式設(shè)計專屬于自己的圖床管理界面。這里提供的公共API在任何域名下都是可以調(diào)用的,沒有跨域問題。

前臺地址:基于xui搭建的圖床界面前臺。

api開放地址:圖床開放地址(免費勿黑)。

1、Node應(yīng)用基本架構(gòu)方式以及開發(fā)NodeJS應(yīng)用的流程

有關(guān)nodejs的項目架構(gòu)以及如何組織nodejs目錄,我在30分鐘教你優(yōu)雅的搭建nodejs開發(fā)環(huán)境及目錄設(shè)計這篇文章中有詳細的說明,大家在讀完本文之后可以學習研究一下.

開發(fā)任何一個應(yīng)用之前首先要做的就是了解需求,需求理清楚之后就可以做技術(shù)選型了,開發(fā)基于nodeJS的后端應(yīng)用的技術(shù)方案很多,如果對nodejs很熟悉,完全可以使用原生nodejs來開發(fā)應(yīng)用; 對于中小型應(yīng)用我們可以直接采用Koa來開發(fā),其中間件機制和插拔式的設(shè)計理念可以很方便的讓我們開發(fā)自己的中間件;如果是涉及到比較復(fù)雜的業(yè)務(wù)線我們可以采用egg.js或者nest.js來作為nodeJS的框架選型,由于本文的圖床應(yīng)用比較簡單,所以筆者這里直接采用koa生態(tài)來做開發(fā). 接下來先看看我們圖床應(yīng)用的目錄結(jié)構(gòu):

圖片

2.Koa + Koa-Router + glob + Node基本API使用

圖片

學習koa最快的方式就是直接看官方文檔, koa的官方文檔非常簡單也非常詳細,所以不懂的可以先看看官網(wǎng).

(1)服務(wù)端路由(接口)設(shè)計

服務(wù)端路由我們主要使用koa-router, 使用方式也很簡單, 代碼如下:

const Koa = require('koa');
const Router = require('@koa/router');

const app = new Koa();
const router = new Router();
// 獲取列表的路由接口
router.get('/api/list', (ctx, next) => {
// 獲取列表的邏輯
});
// 上傳圖片的路由接口
router.post('/api/upload', (ctx, next) => {
// 上傳圖片的邏輯
});

app
.use(router.routes())
.use(router.allowedMethods());復(fù)制代碼

因為圖床的應(yīng)用非常簡單,我們這里就直接使用傳統(tǒng)的方式實現(xiàn), 有關(guān)nodeJS的MVC架構(gòu)可以參考我之前寫的node的文章.

(2)使用glob來批量獲取圖片路徑

這里批量獲取圖片路徑我們主要使用glob來通過遍歷目錄來獲取, 這種方式在圖片數(shù)據(jù)量小的時候可以使用,但是一旦圖片量指數(shù)級增長,更建議用數(shù)據(jù)庫來存取,畢竟IO操作還是比較費性能的.筆者這里為了方便采用glob來實現(xiàn). glob是一個基于node的第三發(fā)庫,支持我們使用模式匹配的方式遍歷文件目錄, 具體用法如下:

import glob from 'glob'
// 讀取文件
router.get('/api/v0/files',
ctx => {
const files = glob.sync(`${staticPath}/uploads/*`)
const result = files.map(item => {
return `${config.staticPath}${item.split('public')[1]}`
})

ctx.body = {
state: 200,
result
}
}
);復(fù)制代碼

這樣就實現(xiàn)了批量獲取圖片的api,是不是很簡單呢? 我們只需要訪問這個接口,就可以拿到圖床的所有圖片列表了.當我們訪問這個接口時,會返回如下數(shù)據(jù):

圖片

3、跨域解決方案Koa Cors的使用介紹,以及如何和前協(xié)作跨域

由于瀏覽器同源策略,凡是發(fā)送請求url的協(xié)議、域名、端口三者之間任意一個與當前頁面地址不同就被算作跨域。實現(xiàn)跨域的方式也很多,比如JSONP跨域,nginx反向代理,服務(wù)器端修改header,設(shè)置document.domain,使用postMessage技術(shù)等,但是目前主流的方式還是基于cors來實現(xiàn).

為了讓圖床提供的服務(wù)給不同的域使用, 我們需要配置跨域,這里我們采用koa2-cors提供的應(yīng)答式跨域解決方案,其實原理也很簡單,就是配置http的請求響應(yīng)頭信息, 讓我們的服務(wù)器支持不同的ip訪問.其基本用法如下:

import cors from 'koa2-cors'
// 設(shè)置跨域
app.use(cors({
origin: function (ctx) {
console.log(111, ctx.url)
if (ctx.url.indexOf('/api/v0') > -1) {
return "*"; // 允許來自所有域名請求
}
return 'http://qutanqianduan.com'; // 這樣就能只允許 http://qutanqianduan.com 這個域名的請求了
},
exposeHeaders: ['WWW-Authenticate', 'Server-Authorization'], // 獲取額外的header信息
maxAge: 5, // 該字段可選,用來指定本次預(yù)檢請求的有效期,單位為秒
credentials: true,
allowMethods: ['GET', 'POST', 'DELETE'], // 請求允許的方法
allowHeaders: ['Content-Type', 'Authorization', 'Accept', 'x-requested-with'] // 允許的header字段名
}))復(fù)制代碼

通過以上的配置,我們就可以實現(xiàn)基本的跨域了.如果我們想只讓某些特定的接口實現(xiàn)跨域,我們可以設(shè)置接口白名單, 也可以通過設(shè)置域名白名單來達到只讓特定的域名訪問我們的api接口.這種情況更適用于公司內(nèi)部多個子系統(tǒng)間互相協(xié)作通信的情景.

4、基于@koa/multer封裝文件上傳中間件

服務(wù)器要想接受客戶端上傳的文件,我們還需要提供文件上傳接口, 這里筆者采用koa生態(tài)比較主流的實現(xiàn)方式@koa/multer. 具體使用介紹官網(wǎng)寫的也很詳細,大家可以看官網(wǎng)學習@koa/multer。

(1)實現(xiàn)文件上傳接口

接下來我們基于它實現(xiàn)文件上傳中間件.具體實現(xiàn)如下:

import multer from '@koa/multer'
import { resolve } from 'path'
import fs from 'fs'

const rootImages = resolve(__dirname, '../../public/uploads')
//上傳文件存放路徑、及文件命名
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, rootImages)
},
filename: function (req, file, cb) {
let [name, type] = file.originalname.split('.');
cb(null, `${name}_${Date.now().toString(16)}.${type}`)
}
})
//文件上傳限制
const limits = {
fields: 10,//非文件字段的數(shù)量
fileSize: 1024 * 1024 * 2,//文件大小 單位 b
files: 1//文件數(shù)量
}

export const復(fù)制代碼

由以上代碼可知我們在destination目錄下設(shè)置了文件上傳的目標目錄, 通過filename接口來設(shè)置上傳之后的文件名. limits是對文件操作的限制,具體的可以根據(jù)自己的需求來配置.

其次結(jié)合koa-router來實現(xiàn)文件上傳接口:

// lib/upload.js
// 為了捕獲multer的錯誤
export const uploadSingleCatchError = async (ctx, next) => {
let err = await upload.single('file')(ctx, next).then(res => res)
.catch(err => err);
if(err) {
ctx.status = 500
ctx.body = {
state: 500,
msg: err.message
}
}
}

// index.js
// 上傳文件
router.post('/api/v0/upload', uploadSingleCatchError,
ctx => {
let { filename, path, size } = ctx.file;
let { source } = ctx.request.body || 'unknow';

let url = `${config.staticPath}${path.split('/public')[1]}`

ctx.body = {
state: 200,
filename,
url,
source,
size
}
}
);復(fù)制代碼

這樣我們就能通過任意一個客戶端上傳圖片到我們的圖床上了.

(2)刪除文件接口實現(xiàn)

我們用原生nodejs實現(xiàn)刪除文件的功能, 這里會用到fs模塊,具體實現(xiàn)如下:

// lib/upload.js
// 刪除文件
export const delFile = (path) => {
return new Promise((resolve, reject) => {
fs.unlink(path, (err) => {
if(err) {
reject(err)
}else {
resolve(null)
}
})
})
}// 刪除文件接口
router.get('/api/v0/del',
async ctx => {
const { id } = ctx.query
if(id) {
const err = await delFile(`${staticPath}/uploads/${id}`)
if(!err) {
ctx.body = {
state: 200,
result: '刪除成功'
}
}else {
ctx.code = 500
ctx.body = {
state: 500,
result: '文件不存在,刪除失敗'
}
}
}else500 ctx.body = {
state: 500,
result: 'id不能為空'
}
}
}
)復(fù)制代碼

這樣,我們在自己的客戶端應(yīng)用中點擊刪除按鈕就可以刪除圖床上的文件了.當然本圖傳應(yīng)用還有很多接口實現(xiàn)細節(jié), 這里就不一一介紹了,感興趣的朋友可以研究一下.

5、使用React開發(fā)前端應(yīng)用以及xui基本使用

接下來借來實現(xiàn)我們的圖床客戶端,客戶端的實現(xiàn)以及設(shè)計風格完全可以由自己來定,所以這里只是介紹一下筆者實現(xiàn)的客戶端,筆者將采用react全家桶以及自己開發(fā)的第三方ui庫xui——基于react的輕量級UI組件庫來實現(xiàn),關(guān)于如何開發(fā)一個專屬于自己的組件庫,可以參考筆者之前的文章. 首先我們簡單開發(fā)一個圖床應(yīng)用的界面:

圖片

我們先引入組件庫:

import React, { Component } from 'react'
import {
Notification,
message,
Layout,
Icon
} from '@alex_xu/xui'
const復(fù)制代碼

接著搭建我們的頁面:

class UploadPage extends Component {
state = {
fileList: []
}

componentDidMount() {
fetch(apiUrl + '/files').then(res => res.json()).then(res => {
this.setState({
fileList: res.result
})
})
}

showAddress = (item) => {
Notification.config({
placement: 'topRight',
})
Notification.pop({
type: 'success',
message: '圖片地址',
duration: 10,
description: item
})
}

render() {
return (
<div className="upload-wrap">
<Layout>
<Header fixed>
<div className="logo"><Icon type="FaBattleNet" style={{fontSize: '30px', marginRight: '12px'}} />XOSS</div>
</Header>
<Content style={{marginTop: '48px', backgroundColor: '#f0f2f5'}}>
{
this.state.fileList.map((item, i) => {
return <div key={i} className="imgBox" notallow={this.showAddress.bind(this, item)}>
<img src={item} alt=""/>
<span className="del-btn" notallow={this.delFile.bind(this, item)}><Icon type="FaMinusCircle" style={{fontSize: '24px'}} /></span>
</div>
})
}
</Content>
<Footer style={{color: 'rgba(0,0,0, .5)'}}>趣談前端 -- 徐小夕</Footer>
</Layout>
</div>
)
}
}

export default UploadPage復(fù)制代碼

關(guān)于http庫我們可以使用任何一種主流的庫比如axios, umi-request等. 本客戶端代碼已發(fā)布到github,大家可以clone本地運行一下:

基于react+redux+redux-thunk+xui開發(fā)的todoOA管理平臺。

本文轉(zhuǎn)載自微信公眾號「趣談前端」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系趣談前端公眾號。

責任編輯:姜華 來源: 趣談前端
相關(guān)推薦

2020-05-22 10:20:27

Shiro架構(gòu)字符串

2020-05-27 10:36:43

機器學習人工智能計算機

2017-01-10 09:07:53

tcpdumpGET請求

2021-01-18 05:59:21

開發(fā)桌面版應(yīng)用技術(shù)熱點

2013-05-03 10:57:09

泛型泛型教程

2021-04-30 16:23:58

WebRTC實時音頻

2024-03-18 18:07:38

VSCode插件文件

2009-10-09 14:45:29

VB程序

2018-08-30 09:01:28

Web服務(wù)器Windows 10

2017-07-18 11:10:45

2021-08-01 21:38:07

網(wǎng)頁點燈網(wǎng)關(guān)

2023-10-06 19:21:49

Initializr應(yīng)用Spring

2012-06-28 10:26:51

Silverlight

2018-02-02 10:24:37

Nginx入門指南

2022-08-22 08:32:17

招聘函數(shù)string

2024-09-29 10:34:31

FlaskPythonAPI

2024-08-27 13:43:38

Spring系統(tǒng)業(yè)務(wù)

2017-06-07 18:40:33

PromiseJavascript前端

2013-12-11 10:00:14

C++新特性C

2023-12-28 08:01:17

SpringAPI數(shù)據(jù)
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲国产小视频在线观看| 国产亚洲女人久久久久毛片| 美日韩精品视频免费看| 亚洲免费观看在线| 免费日韩电影| 亚洲色图20p| 国产一区二区久久| 在线综合视频播放| 欧美深夜福利视频| 国产尤物视频在线| 国产伦精品一区二区三区在线观看| 美女扒开尿口让男人操亚洲视频网站| 国产免费一区二区三区最新6| 神马电影网我不卡| 樱花影视一区二区| 欧美高清一区二区| 午夜精品久久久久久久99| 免费日韩av片| 欧美精品videosex性欧美| 欧美黄色一级生活片| 日韩成人18| 欧美系列日韩一区| 热99这里只有精品| 国产成人无吗| 国产午夜精品一区二区三区嫩草| 亚洲自拍偷拍区| 老熟妇一区二区三区| 欧美黄色精品| 在线观看亚洲视频| 精品人妻伦一二三区久| 不卡的国产精品| 色综合久久久网| 九九久久九九久久| 成全电影播放在线观看国语| 国产69精品久久久久777| 国产精品影片在线观看| 一级片中文字幕| 欧美日韩亚洲一区| 日韩中文字幕不卡视频| 爱爱的免费视频| youjizz亚洲| 日韩一区二区在线看| 亚洲第一狼人区| 色老太综合网| 色婷婷久久一区二区三区麻豆| 国产精品一线二线三线| 在线播放蜜桃麻豆| 亚洲精选一二三| 夜夜爽www精品| 成全电影播放在线观看国语| 国产亚洲一区二区三区四区 | 久久久久久久亚洲| 国产人成精品一区二区三| 欧美激情中文网| 免费日韩在线视频| 欧美激情在线| 九九热最新视频//这里只有精品| 国产美女高潮视频| 97视频精品| 日韩在线观看免费av| 欧美美女性生活视频| 欧美丰满日韩| 久久五月天综合| 青青草精品在线视频| 女人香蕉久久**毛片精品| 欧美老少做受xxxx高潮| 精品少妇theporn| 亚洲午夜视频| 欧美一级淫片丝袜脚交| 男人天堂2024| 美女视频第一区二区三区免费观看网站 | 少妇光屁股影院| 在线一级成人| 色噜噜狠狠狠综合曰曰曰88av| 貂蝉被到爽流白浆在线观看| 欧美gay男男猛男无套| 日韩视频免费中文字幕| 国产一区二区播放| 亚洲国产高清一区| 欧美一级黑人aaaaaaa做受| 欧美日韩综合一区二区三区| 久久久精品五月天| 国产日韩欧美在线| 亚洲精品视频91| 91在线视频观看| 亚洲欧美久久234| 制服丝袜在线第一页| av在线日韩| 欧美精品在线观看播放| 亚洲丝袜在线观看| a看欧美黄色女同性恋| 精品亚洲一区二区三区| 1024手机在线观看你懂的| 国产高清一区| 久久久亚洲网站| 国产精品无码粉嫩小泬| 国产一区二区精品在线观看| 国产一区精品视频| 9191在线| 亚洲444eee在线观看| 男人女人黄一级| 亚洲不卡在线| 国产亚洲综合久久| 欧美卡一卡二卡三| 久久精品卡一| 亚洲综合av影视| 狠狠v欧美ⅴ日韩v亚洲v大胸 | 美女视频黄免费的久久| 国产精品乱子乱xxxx| 大乳在线免费观看| 亚洲国产精品嫩草影院| 免费看国产黄色片| 米奇精品关键词| 日韩视频免费在线观看| 成人免费毛片男人用品| 国产在线一区二区| 欧美一级日本a级v片| 日本资源在线| 欧美日韩一区三区四区| 国产精品探花一区二区在线观看| 国产精品88久久久久久| 青青精品视频播放| 欧美一区二区黄片| 亚洲人一二三区| 中文字幕第21页| 亚洲制服一区| 欧美精品videosex性欧美| 亚洲特级黄色片| 国产亚洲一区二区三区在线观看 | 久久99伊人| 国产精品二区在线| 国产欧美黑人| 欧美日韩日本视频| av男人的天堂av| 国产日韩精品视频一区二区三区 | www.五月婷| 亚洲人成影院在线观看| 亚洲综合色在线观看| 欧美人与拘性视交免费看| 国模精品系列视频| 亚洲乱熟女一区二区| 一区二区三区美女| 三级黄色片播放| 91久久久精品国产| 国产欧美婷婷中文| 91大神在线网站| 欧美系列日韩一区| 九九热免费在线| 日本欧美韩国一区三区| 日韩av图片| 美女色狠狠久久| 在线视频国产日韩| 中国一区二区视频| 国产精品色哟哟| 中文字幕永久有效| 国产精品国产三级国产在线观看| 成人福利网站在线观看| 国产三级在线播放| 日韩精品资源二区在线| 国产精品白嫩白嫩大学美女| 国产精品原创巨作av| 日韩精品免费一区| 国产精品一区二区三区美女| 91国产高清在线| 日韩a级作爱片一二三区免费观看| 欧美日韩一区免费| www.中文字幕av| 三级不卡在线观看| 一区二区三区四区五区视频| 日本成人一区二区| 久久躁狠狠躁夜夜爽| 亚洲国产成人在线观看| 亚洲丰满少妇videoshd| 波多野结衣影院| 日韩精品午夜视频| 视频一区二区视频| 福利片在线一区二区| 91国产中文字幕| 高清在线观看av| 777奇米四色成人影色区| 麻豆疯狂做受xxxx高潮视频| 99久久久无码国产精品| 国产成人综合一区| 911精品美国片911久久久| 5g影院天天爽成人免费下载| 少妇熟女一区二区| 爱情岛亚洲播放路线| 日韩精品有码在线观看| 波多野结衣日韩| 亚洲视频在线观看一区| 女同性恋一区二区三区| 久久男女视频| 潘金莲一级淫片aaaaa免费看| 国产成人在线中文字幕| 国产精品久久久久久超碰| www视频在线看| 日韩成人久久久| 一级片在线免费观看视频| 亚洲一区二区av在线| 免费看91的网站| 国产精品亚洲专一区二区三区| 日韩av综合在线观看| 91亚洲一区| 久久久久久久有限公司| 一区二区三区日本视频| 欧美影院在线播放| 91精品国产91久久久久久青草| 亚洲国产精品久久久| 亚洲一卡二卡在线| 黄色精品在线看| 欧美被狂躁喷白浆精品| 国产日韩精品一区二区三区在线| 国产ts在线观看| 美国三级日本三级久久99| 欧美三级在线观看视频| 国产精品久久久久久影院8一贰佰| 精品日本一区二区| 欧美视频三区| 国产在线观看精品一区二区三区| 国产一二三在线| 欧美成人一二三| 日本中文字幕精品| 亚洲电影二区| 日韩美女免费视频| 免费av不卡在线观看| 日韩在线视频网站| 国产区视频在线| 日韩精品欧美国产精品忘忧草 | 婷婷午夜社区一区| 久久久之久亚州精品露出| 日本美女高清在线观看免费| 亚洲欧洲黄色网| 手机在线观看免费av| 日韩欧美一二三| 91中文字幕在线视频| 欧美性猛交xxxxxxxx| 无码视频在线观看| 日韩欧美亚洲成人| 天天综合网久久综合网| 亚洲国产视频一区| 538任你躁在线精品视频网站| 国产精品入口麻豆九色| 男人的天堂官网| 久久久久国产精品麻豆ai换脸| 久久久国产精品无码| 懂色av一区二区在线播放| 精品人妻一区二区三| 国产真实乱对白精彩久久| 天天影视色综合| 久久99精品国产.久久久久 | 朝桐光一区二区| 国产97色在线|日韩| 电影一区二区三| 日本成人免费在线| 免费日韩电影| 国产精品美女久久| 欧美日韩va| 成人免费网站在线观看| 不卡精品视频| 动漫3d精品一区二区三区| 国产精品tv| 欧美日韩国产精品一卡| 欧美美女视频| 中文字幕av久久| 欧美精品网站| 免费不卡av在线| 久久久www| 亚洲免费999| 国产精品18久久久久久久久| 久久精品无码专区| 91视视频在线观看入口直接观看www | 久久精品99国产精品酒店日本| 免费a在线看| 久久免费视频在线观看| 超碰aⅴ人人做人人爽欧美| 热门国产精品亚洲第一区在线| 亚洲成人激情社区| 成人久久一区二区三区| 国产乱论精品| 日韩久久不卡| 亚洲最新色图| 中文字幕日本最新乱码视频| 日本aⅴ免费视频一区二区三区 | 日韩色av导航| 丁香花电影在线观看完整版| 51ⅴ精品国产91久久久久久| av激情成人网| 国产精品播放| 日韩精品一卡| 亚洲精品久久久久久久蜜桃臀| 久久国产66| 美女被艹视频网站| 久久久www免费人成精品| 国产一二三区精品| 欧美日韩国产精品一区二区不卡中文| 国产乡下妇女三片| 精品乱人伦小说| 在线播放日本| 91精品国产91久久| 少妇高潮一区二区三区99| 国产精品推荐精品| 欧美中文一区二区| 欧美人成在线观看| 久久国产精品区| 国产激情视频网站| 自拍偷拍亚洲欧美日韩| 国产三级av片| 日韩欧美国产高清| 成人动漫在线免费观看| 久久欧美在线电影| www999久久| 日本最新一区二区三区视频观看| 欧美体内she精视频在线观看| 少妇性l交大片| 99久久免费视频.com| 东方av正在进入| 欧美色图片你懂的| 涩爱av在线播放一区二区| 久久国产精品电影| jvid一区二区三区| 免费在线成人av| 国产精品theporn| 欧美日韩中文不卡| 久久久高清一区二区三区| 国产成人无码精品| 日韩欧美在线影院| 老司机在线视频二区| 国产精品白丝jk喷水视频一区| 国内露脸中年夫妇交换精品| 国产手机视频在线观看| 麻豆一区二区三| 无码国产69精品久久久久同性| 亚洲成年人网站在线观看| 精品国产av一区二区| 久久久久北条麻妃免费看| 成人在线高清| 先锋影音一区二区三区| 六月天综合网| 少妇毛片一区二区三区| 日韩欧美国产黄色| 天天干天天操av| 91av在线免费观看| 欧美理伦片在线播放| 免费在线观看视频a| 成人网在线免费视频| 国产一级一片免费播放| 日韩精品一区二区三区四区| 97超碰在线公开在线看免费| 成人激情视频在线播放| 天天射—综合中文网| 国产精品久久a| 国产精品久线在线观看| 国产又大又粗又硬| 麻豆一区二区在线观看| 久久9999免费视频| 国产高清不卡无码视频| 国产91在线观看| 久久久久无码国产精品不卡| 精品国产在天天线2019| ****av在线网毛片| 久久精品国产精品青草色艺| 欧美亚洲一区| 国产免费一区二区三区网站免费| 欧美一a一片一级一片| 午夜视频在线观看网站| 91在线视频一区| 激情成人亚洲| 91视频在线网站| 欧美午夜精品电影| 久久bbxx| 国产亚洲一区二区三区在线播放 | 老司机午夜福利视频| 91精品国产高清| 精品理论电影| aaaaaaaa毛片| 精品二区三区线观看| 韩国三级av在线免费观看| 国产色综合天天综合网 | 伦理中文字幕亚洲| 精品国产一区二区三区不卡蜜臂| 精品欧美一区免费观看α√| 国产日韩一级二级三级| 91免费视频播放| 久久免费观看视频| 精品久久久久久久久久久aⅴ| 亚洲免费黄色录像| 婷婷激情综合网| 在线观看麻豆| 国产精品久久久久久久久久直播| 鲁大师影院一区二区三区| 91香蕉一区二区三区在线观看| 精品国产乱码久久久久久免费 | 欧美日韩高清一区| 青草在线视频| 台湾成人av| av在线播放不卡| 国产农村妇女毛片精品久久| 性欧美视频videos6一9| 久久看人人摘| 人妻精品久久久久中文字幕|