久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

Vue組件封裝上傳圖片和視頻的示例代碼

瀏覽:112日期:2023-02-09 13:43:28

Vue組件封裝上傳圖片和視頻的示例代碼

首先下載依賴:

cnpm i -S vue-uuid ali-oss

圖片和視頻字段都是數組類型,保證可以上傳多個文件。

UploadImageVideo:

<!--UploadImageVideo 分片上傳 --><template> <div class='UploadImageVideo'> <el-upload action :on-change='handleChange' :on-remove='handleRemove' :limit='limitFileNumber' :on-exceed='handleExceed' :file-list='_fileList' :http-request='handleHttpRequest' :before-upload='handleBeforeUpload' :multiple='isMultiple' > <el-button slot='trigger' size='small' type='primary'>選擇文件</el-button> <div slot='tip' class='el-upload__tip'>{{ tip }}</div> </el-upload> <el-dialog :visible.sync='dialogTableVisible' :close-on-click-modal='false' :modal-append-to-body='false' > <el-progress :text-inside='true' :stroke- :percentage='percentage'></el-progress> </el-dialog> </div></template> <script>import { uuid } from 'vue-uuid';const OSS = require('ali-oss'); export default { name: '', components: {}, props: { region: { type: String, default: 'oss-cn-chengdu' }, accessKeyId: { type: String, default: 'xxx' }, accessKeySecret: { type: String, default: 'xxx' }, //存儲位置 bucket: { type: String, required: true }, currentUrls: { type: Array, default: () => [], required: true }, //限制上傳文件數量 limitFileNumber: { type: Number, default: 1 }, //是否支持多選 isMultiple: { type: Boolean, default: false }, //文件格式 fileType: { type: String, default: '' }, //提示 tip: { type: String } }, data() { return { client: new OSS({region: this.region,accessKeyId: this.accessKeyId,accessKeySecret: this.accessKeySecret,bucket: this.bucket }), percentage: 0, dialogTableVisible: false, fileList: [] }; }, computed: { //注意:計算屬性里面慎用console.log()來打印,因為有可能打印的變量是依賴某個屬性而出現該計算屬性重復調用?。。。。?! _fileList() { const arr = []; //一定要this.currentUrls判斷一下是否非空,否則要報錯 if (this.currentUrls.length !== 0) {for (const item of this.currentUrls) { let { pathname } = new URL(item); arr.push({ name: decodeURIComponent(pathname), url: item });} } this.fileList = arr; //這行代碼很重要!! return arr; } }, created() {}, mounted() {}, methods: { handleChange(file, fileList) { this.fileList = fileList; }, handleRemove(file, fileList) { this.fileList = fileList; }, handleExceed(files, fileList) { this.$message.warning(`當前限制選擇 ${this.limitFileNumber} 個文件,本次選擇了 ${ files.length} 個文件,共選擇了 ${files.length + fileList.length} 個文件` ); }, //注意:為了讓自定義上傳handleHttpRequest生效,需滿足: // 1、設置:auto-upload=’true’或者不寫這個屬性,因為它默認為true 2、設置action=’#’或者直接寫action handleHttpRequest(file) { //雖然沒有內容,但是這個函數不能少! }, //注意:自定義上傳handleHttpRequest必須要生效,才會觸發before-upload鉤子函數 handleBeforeUpload(file) { if (this.fileType == 'image') {let { type, size, name } = file;let isJPEG = type === 'image/jpeg';let isJPG = type === 'image/jpg';let isPNG = type === 'image/png';let isLt5M = size / 1024 / 1024 < 5;if (!isJPEG && !isJPG && !isPNG) { this.$message.error('上傳圖片只能是 JPEG/JPG/PNG 格式!'); return false;}if (!isLt5M) { this.$message.error('單張圖片大小不能超過 5MB!'); return false;} } if (this.fileType == 'video') {let { type, size, name } = file;let isMP4 = type === 'video/mp4';let isLt50M = size / 1024 / 1024 < 50;if (!isMP4) { this.$message.error('上傳視頻只能是 MP4 格式!'); return false;}if (!isLt50M) { this.$message.error('單個視頻大小不能超過 50MB!'); return false;} } }, // 分片上傳數據,可展示進度條。上傳重命名后的文件到alioss, 并返回單個文件url字符串??芍С种形奈募? async UploadImageVideo(filename, file) { let newFileName =filename.split('.')[0] + '-' + uuid.v1() + '.' + filename.split('.')[1]; let that = this; that.dialogTableVisible = true; let {res: { requestUrls } } = await this.client.multipartUpload(newFileName, file, {progress: function(p, checkpoint) { that.percentage = parseFloat((p * 100).toFixed(2));} }); if (that.percentage == 100) {that.dialogTableVisible = false; } let { origin, pathname } = new URL(requestUrls[0]); return origin + decodeURIComponent(pathname); }, //批量上傳文件。返回成功上傳的url數組 async addFiles() { let urls = []; if (this.fileList.length !== 0) {for (const item of this.fileList) { let { name, raw } = item; let pathname = await this.UploadImageVideo(name, raw); urls.push(pathname);} } return urls; }, //更新文件數據。上傳新數據到服務器,并刪除服務器中的舊數據,返回更新后的url數組 async UpdateFiles() { let arr_newUploaded = []; //新上傳的圖片url。 let arr_original = []; //原有的圖片url。不用刪除 let arr_delete = []; //需要刪除的圖片url。 if (this.fileList.length !== 0) {for (const { raw, name, url } of this.fileList) { //注意:這里一定要判斷raw是否存在。存在,則表示是新上傳的;不存在,則表示是原有的 if (raw) { let pathname = await this.UploadImageVideo(name, raw); arr_newUploaded.push(pathname); } if (this.currentUrls.includes(url)) { arr_original.push(url); }} } for (const element of this.currentUrls) {if (!arr_original.includes(element)) { arr_delete.push(element);} } await this.deleteMultiFiles(arr_delete); return [...arr_original, ...arr_newUploaded]; }, //批量刪除服務器中的文件。參數:待刪除到服務器文件url數組。 async deleteMultiFiles(urls = []) { let arr_pathname = []; if (urls.length !== 0) {for (const item of urls) { //不要用let url=require('url');url.parse();已失效。要用new URL() let { pathname } = new URL(item); // decodeURIComponent()函數將中文亂碼轉為中文 arr_pathname.push(decodeURIComponent(pathname));}//刪除服務器中的圖片await this.client.deleteMulti(arr_pathname); } } }, watch: {}};</script> <style lang='scss' scoped>.UploadImageVideo { /*去除upload組件過渡效果*/ ::v-deep .el-upload-list__item { transition: none !important; }}</style>

使用:

<UploadImageVideo ref='ref_UploadImageVideo' bucket='xxx' :currentUrls='formData.imgurl' :limitFileNumber='3' tip='1、最多上傳3張照片; 2、上傳圖片只能是 JPEG/JPG/PNG 格式; 3、單張圖片大小不能超過 5MB!' fileType='image' :isMultiple='true'></UploadImageVideo> fileType可選。默認不寫,表示圖片、視頻都可上傳。fileType='image'表示只能上傳圖片。fileType='video'表示只能上傳視頻 bucket必選。 isMultiple可選。默認為false currentUrls必選。當前目前已有的文件服務器url數組。通常新增文件時,傳入的currentUrls為空數組[];更新文件時,傳入到currentUrls為非空數組 tip可選。提示內容

提供的方法:(當前組件中所有的上傳都是批量上傳,且為分片上傳,以展示上傳進度條)

UpdateFiles()。更新文件數據。上傳新數據到服務器,并刪除服務器中的舊數據,返回更新后的url數組 addFiles()。批量上傳文件。返回成功上傳的url數組 deleteMultiFiles(urls = [])。批量刪除服務器中的文件。參數:待刪除到服務器文件url數組。 UploadImageVideo(filename, file)。分片上傳數據,可展示進度條。上傳重命名后的文件到alioss, 并返回單個文件url字符串??芍С种形奈募?p>調用組件中的方法:例如可通過 let urls = await this.$refs['ref_UploadImageVideo'].addFiles();調用批量上傳圖片或視頻的方法

例1:

Vue組件封裝上傳圖片和視頻的示例代碼Vue組件封裝上傳圖片和視頻的示例代碼 Vue組件封裝上傳圖片和視頻的示例代碼

<!--userManage--><template> <div class='userManage'> <el-card> <div style='margin-bottom: 10px'><el-input v-model='searchName' clearable placeholder='輸入用戶名稱搜索' /><el-button sizi='mini' type='success' icon='el-icon-search' @click='searchUser(searchName)'>搜索</el-button><el-button sizi='mini' type='warning' icon='el-icon-refresh-left' @click='searchName = ’’'>重置</el-button><el-button sizi='mini' @click='handleAdd()' type='primary' icon='el-icon-plus'>新增</el-button><el-button @click='getUserList()' sizi='mini' icon='el-icon-refresh' style='float: right'>刷新</el-button> </div> <el-table :data='tableData' border v-loading='isLoading'><el-table-column label='用戶名' prop='username' width='150px'></el-table-column><el-table-column label='密碼' prop='password' align='center'></el-table-column><el-table-column label='圖片' align='center'> <template slot-scope='scope'> <div > <el-image v-for='(item, index) in scope.row.imgurl':key='index':src='http://www.gepszalag.com/bcjs/item':preview-src-list='scope.row.imgurl' ></el-image> <!-- <a :href='http://www.gepszalag.com/bcjs/scope.row.imgurl' rel='external nofollow' target='_blank'>{{scope.row.imgurl}}</a> --> </div> </template></el-table-column><el-table-column label='操作' align='center'> <template slot-scope='scope'> <el-button size='mini' @click='showEditDialog(scope.row)'> <i /> 編輯 </el-button> <el-button size='mini' type='danger' @click='handleDelete(scope.row)'> <i /> 刪除 </el-button> </template></el-table-column> </el-table> </el-card> <UserManageDialog :dialog='dialog' :formData='formData' @addUser='addUser' @editUser='editUser'></UserManageDialog> </div></template> <script>import UserManageDialog from './userManageDialog.vue';import { client_alioss, deleteMultiFiles } from '@/utils/alioss.js'; import { addUser, getUserList, editUser, deleteUser, searchUser} from '@/api/userManage/index';export default { name: 'userManage', components: { UserManageDialog }, data() { return { searchName: '', isLoading: false, dialog: {show: false,title: '' }, formData: {}, tableData: [{ _id: '', username: 'admin', password: '123', imgurl: []} ], currentImgs: [] }; }, props: {}, created() {}, mounted() { this.getUserList(); }, computed: {}, methods: { //獲取用戶列表 async getUserList() { this.isLoading = true; let { data } = await getUserList(); this.tableData = data.data; this.isLoading = false; }, //打開新增用戶窗口 handleAdd() { this.dialog = {show: true,title: '新增用戶',option: 'add' }; this.formData = {username: '',password: '',imgurl: [] }; }, //打開編輯用戶窗口 showEditDialog(row) { this.currentImgs = row.imgurl; this.dialog = {show: true,title: '編輯用戶',option: 'edit' }; this.formData = {_id: row._id,username: row.username,password: row.password,imgurl: row.imgurl }; }, //新增用戶 async addUser(urls) { this.formData.imgurl = urls; await addUser(this.formData); this.dialog.show = false; this.$notify({title: '成功',message: '新增用戶成功!',type: 'success' }); this.getUserList(); }, //編輯用戶 async editUser(urls) { this.formData.imgurl = urls; await editUser(this.formData, this.formData._id); //更新數據庫,尤其是圖片url this.dialog.show = false; this.$notify({title: '成功',message: '編輯用戶成功!',type: 'success' }); this.getUserList(); }, //刪除用戶 handleDelete({ _id }) { this.$confirm('此操作將永久刪除該文件, 是否繼續?', '提示', {confirmButtonText: '確定',cancelButtonText: '取消',type: 'warning' }).then(async () => { this.$message({ type: 'success', message: '刪除成功!', showClose: true }); let { data: { imgurl } } = await deleteUser(_id); //刪除服務器中的文件。傳入待刪除的url數組 await deleteMultiFiles(imgurl); this.getUserList();}).catch(() => { this.$message({ type: 'info', message: '已取消刪除', showClose: true });}); }, //根據用戶名查詢 async searchUser(searchName) { this.isLoading = true; let { data } = await searchUser({searchName }); this.tableData = data.data; this.isLoading = false; } }, watch: {}};</script> <style lang='scss' scoped>.userManage {}</style>

Vue組件封裝上傳圖片和視頻的示例代碼

<!--userManageDialog --><template> <div class='userManageDialog'> <el-dialog :title='dialog.title' :visible.sync='dialog.show' v-if='dialog.show'> <el-form ref='ref_form_userManage' :model='formData' :rules='rules' label-width='100px'><el-form-item label='用戶名' prop='username'> <el-input v-model='formData.username' autocomplete='off' style='width: 90%'></el-input></el-form-item><el-form-item label='密碼' prop='password'> <el-input v-model='formData.password' autocomplete='off' style='width: 90%'></el-input></el-form-item><el-form-item label='圖片' prop='imgurl'> <!-- fileType屬性不寫的話,表示圖片、視頻都可上傳。fileType='image'表示只能上傳圖片。fileType='video'表示只能上傳視頻 --> <UploadImageVideo ref='ref_UploadImageVideo' bucket='bucket-lijiang-test' :currentUrls='formData.imgurl' :limitFileNumber='3' tip='1、最多上傳3張照片; 2、上傳圖片只能是 JPEG/JPG/PNG 格式; 3、單張圖片大小不能超過 5MB!' fileType='image' :isMultiple='true' ></UploadImageVideo></el-form-item> </el-form> <div slot='footer' class='dialog-footer'><el-button @click='dialog.show = false'>取 消</el-button><el-button v-if='dialog.option == ’add’' @click='addUser(’ref_form_userManage’)' type='primary'>確 定</el-button><el-button v-if='dialog.option == ’edit’' @click='editUser(’ref_form_userManage’)' type='primary'>確 定</el-button> </div> </el-dialog> </div></template> <script>import UploadImageVideo from '@/components/UploadImageVideo'; export default { name: 'userManageDialog', components: { UploadImageVideo }, props: ['dialog', 'formData'], data() { return { fileList: [], rules: {username: [ { required: true, message: '請輸入用戶名稱', trigger: 'blur' }] } }; }, created() {}, mounted() {}, computed: {}, methods: { addUser(formName) { this.$refs[formName].validate(async valid => {if (valid) { let urls = await this.$refs['ref_UploadImageVideo'].addFiles(); this.$emit('addUser', urls);} else { console.log('error submit!!'); return false;} }); }, editUser(formName) { this.$refs[formName].validate(async valid => {if (valid) { let urls = await this.$refs['ref_UploadImageVideo'].UpdateFiles(); this.$emit('editUser', urls);} else { console.log('error submit!!'); return false;} }); } }, watch: {}};</script><style lang='scss' scoped></style>

Vue組件封裝上傳圖片和視頻的示例代碼

import { uuid } from ’vue-uuid’;const OSS = require('ali-oss'); let client = new OSS({ region: 'oss-cn-chengdu', accessKeyId: 'LTAI5tQPHvixV8aakp1vg8Jr', accessKeySecret: 'xYyToToPe8UFQMdt4hpTUS4PNxzl9S', bucket: 'bucket-lijiang-test', }); export const client_alioss = client; //刪除文件數組export async function deleteMultiFiles(urls = []) { let arr_pathname = []; if (urls.length !== 0) {for (const item of urls) { //不要用let url=require('url');url.parse();已失效。要用new URL() let { pathname } = new URL(item); // decodeURIComponent()函數將中文亂碼轉為中文 arr_pathname.push(decodeURIComponent(pathname));}await client.deleteMulti(arr_pathname); }}

Vue組件封裝上傳圖片和視頻的示例代碼

import request from ’@/utils/request’// 獲取用戶列表export function getUserList() { return request({url: ’/api/userManage’,method: ’get’ })} // 新增用戶export function addUser(data) { return request({url: ’/api/userManage’,method: ’post’,data })} // 編輯用戶export function editUser(data, _id) { return request({url: `/api/userManage/${_id}`,method: ’put’,data })} // 刪除用戶export function deleteUser(_id) { return request({url: `/api/userManage/${_id}`,method: ’delete’ })} // 根據關鍵字查詢export function searchUser(data) { return request({url: `/api/userManage/search`,method: ’get’,params: data })}

Vue組件封裝上傳圖片和視頻的示例代碼

const router = require(’koa-router’)() const User = require('../models/User'); //引入模塊模型router.prefix(’/userManage’) //獲取用戶列表router.get(’/’, async (ctx, next) => { let data = await User.find({}) ctx.body = {code: 200,message: '請求成功',data, }})//新增用戶router.post(’/’, async (ctx, next) => { let { username, password, imgurl } = ctx.request.body; await User.create({ username, password, imgurl }) ctx.body = { code: 200, message: '新增成功' }})//編輯用戶router.put(’/:_id’, async (ctx, next) => { let { username, password, imgurl } = ctx.request.body; let { _id } = ctx.params await User.findByIdAndUpdate(_id, { username, password, imgurl }) ctx.body = { code: 200, message: '編輯成功' }})//刪除用戶router.delete(’/:_id’, async (ctx, next) => { let { _id } = ctx.params; let { imgurl } = await User.findByIdAndDelete(_id) ctx.body = { code: 200, message: '刪除成功', imgurl } }) //根據關鍵字查詢用戶。模糊查詢 router.get(’/search’, async (ctx, next) => { let { searchName } = ctx.request.query; let data = await User.find({ username: { $regex: searchName } }) ctx.body = { code: 200, message: '查詢成功', data }})module.exports = router

到此這篇關于Vue封裝上傳圖片和視頻的組件的文章就介紹到這了,更多相關vue組件封裝內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
主站蜘蛛池模板: 日韩成人影院 | 91影院 | 久久在线 | 亚洲欧美日韩精品久久亚洲区 | 91在线观看网站 | 天天噜天天干 | 日韩毛片免费在线观看 | 精品欧美一区二区在线观看 | 国产精品久久久久国产a级 91福利网站在线观看 | 免费福利网站 | 在线一区二区免费 | 国内精品99 | 欧美另类专区 | www.一区 | 久久高清一区 | 杏导航aⅴ福利网站 | 亚洲国产精品久久 | 能在线观看的黄色网址 | 日韩精品 电影一区 亚洲 | 亚洲福利影院 | 精品国产乱码一区二区三区a | 国产精品美女久久久久久不卡 | 久久人人爽人人爽人人片亚洲 | 欧美日韩一区二区三区四区 | 国产高清在线精品一区 | 日韩成人一级片 | 国产a区| 欧美在线综合 | 一区二区三区视频免费在线观看 | 国产视频中文字幕 | 国产精品久久免费观看spa | 天天射欧美 | 国产成人在线一区 | 国产欧美综合在线 | 99精品全国免费观看视频软件 | 欧美午夜一区二区三区 | 国产色 | 欧美精品一级 | 亚洲精品国产电影 | 国产精品久久久久久久久久ktv | 日本久久综合 | 亚洲乱码在线 | 国产成人精品一区二区三区视频 | 国产专区一区 | 国产精品久久久久久无遮挡 | 欧美人成在线视频 | 中文字幕精品一区二区三区精品 | 伊人网站| 国产一区二区三区久久久 | 欧美在线a | 91精品国产一区二区三区蜜臀 | 欧美一级性 | 国产一区二区视频在线观看 | 日本不卡一区二区 | 欧美福利专区 | 精品国产乱码久久久久久闺蜜 | 一区二区三区高清 | 中文字幕一区二区三区乱码在线 | 综合伊人久久 | av中文字幕在线观看 | 日本午夜在线 | 9久久精品| 91中文字幕 | 欧美一区二区三区爽大粗免费 | 国产视频h| 狠狠操狠狠摸 | 精品一区二区三区久久 | chengrenzaixian| 精品久久久久久久久久久久久久 | 久久网日本 | 成人免费黄色毛片 | 日日干夜夜操 | 成人免费在线观看视频 | 免费成人在线网站 | 国精品一区二区三区 | 国产一区久久 | 久久99精品久久久久蜜臀 | 欧美一区| 久草视频在线播放 | 中文字幕视频在线播放 | 亚洲视频中文 | 亚洲精品一区二区三区蜜桃久 | 亚洲一区二区三区蜜桃 | 九一视频在线观看 | 成人综合网站 | 欧美日本精品 | 国产精品人人做人人爽人人添 | 欧州一区二区三区 | 日本一区二区高清不卡 | 日本久久网站 | 久久精品二 | 国产精品久久影院 | av一二三四| 国产在亚洲 线视频播放 | 亚洲精品一二三 | 在线高清av | 成人免费视频视频在线观看 免费 | 九九九九九九精品任你躁 | 久久99深爱久久99精品 | 久久精品亚洲精品 | 天天拍天天干天天操 | 天天天操 | 日韩精品视频在线播放 | 国产成人精品一区二区三区网站观看 | 成人精品一区二区三区 | 精品日韩| 亚洲 成人 av | 国产婷婷精品av在线 | 亚洲精选国产 | 在线观看91 | 国产精品中文字幕在线观看 | 男女羞羞视频在线免费观看 | 特级a做爰全过程片 | 免费在线观看国产 | av在线播放免费 | 久久久久久亚洲 | 日韩一级二级三级 | 久久综合一区二区 | 欧美成人在线免费视频 | 四色成人av永久网址 | 国产亚洲精品久久久久动 | 毛片在线免费播放 | 亚洲成人一区二区 | 亚洲激情欧美 | 超碰97免费在线 | 久久99国产精品久久99大师 | 亚洲精品在线免费看 | 国产日韩一级片 | 国产成人精品免高潮在线观看 | 成人午夜视频在线 | 欧洲一区二区三区 | 国产亚洲精品久久久久动 | 国产不卡精品视频 | 亚洲aaa | 色www精品视频在线观看 | 日韩视频一区二区三区 | 台湾佬成人网 | 91免费在线视频 | 亚洲国产精品久久久久婷婷老年 | 日韩高清不卡一区二区三区 | 中文字幕成人 | 日日做夜夜爽毛片麻豆 | 久久精品国产免费 | 国产精品1| 中文字幕 国产精品 | 精品一区二区三区免费毛片 | 国产日韩视频 | av一级在线观看 | 毛片网| 男人亚洲天堂网 | 日韩av资源站 | 亚洲精品系列 | 热久久这里只有精品 | 人干人人 | 国产999精品久久久久久 | 在线日韩中文字幕 | 亚洲欧美日韩天堂 | 亚洲成人精品视频 | 国产伦精品一区二区三区四区视频 | 午夜小视频在线观看 | 色毛片 | 成人不卡视频 | 久草精品视频 | 色噜噜狠狠狠综合曰曰曰88av | 精品国产91乱码一区二区三区 | 精品国产欧美 | 久久人人爽人人爽人人片av高清 | 一区在线播放 | 久久久网 | 亚洲精品电影网在线观看 | 一级久久久 | 久久亚洲精品中文字幕 | 免费在线亚洲 | 国产精品一区二区三 | 岛国一区 | 曰本人一级毛片免费完整视频 | 中文字幕电影在线 | 性生活毛片| 久久成人精品一区二区三区 | 欧美在线a| 久在线| 国产午夜视频 | 午夜欧美一区二区三区在线播放 | 欧美一级二级视频 | 三级黄色视频毛片 | 91欧美在线 | 国产精品久久久久久久毛片 | 神马香蕉久久 | 国精品产品区三区 | 国产在线精品视频 | 国产精品一区二区三区四区 | 国产精品一区二区三区免费 | 伊人色综合久久天天五月婷 | 亚洲视频一区在线 | 国产日韩欧美 | 欧美激情a∨在线视频播放 中文字幕网在线 | 一区二区影视 | 中文字幕在线视频一区 | 国产精品一区二区精品 | 亚洲天堂一区二区 | 国产精品一二三区 | 亚洲综合视频 | 免费黄在线看 | 后人极品翘臀美女在线播放 | 日韩欧美在线观看一区二区三区 | 精品视频网站 | 在线观看国产精品一区 | 亚洲免费视频网 | 亚洲狠狠爱 | 精品国产乱码久久久久久1区2区 | 国产精品第一区第27页 | 久久手机视频 | 亚洲h网站| 成人午夜免费视频 | 久久精品小视频 | 99re久久| 中文字幕成人影院 | 久久狠狠 | 91av导航| 日韩欧美大片在线观看 | 亚洲伊人中文字幕 | 一区二区电影 | 亚洲一区二区三区高清 | 成年人在线视频 | 国产一区日韩欧美 | 久久精品色欧美aⅴ一区二区 | 欧美在线视频一区 | 91爱啪啪| 亚洲一区二区三区四区在线观看 | 午夜影院在线观看 | 亚洲国产精品成人综合色在线婷婷 | 一级色视频 | 亚洲精品久久久 | 狠狠操狠狠摸 | 日韩精品一二三 | 国产精品成人3p一区二区三区 | 精品免费国产视频 | 日韩久久一区 | 国产欧美综合一区二区三区 | 国产精品中文字幕在线 | 第一色在线 | 国产精品入口久久 | av在线三级 | 久久久噜噜噜www成人网 | 国产精品久久久久久久久久三级 | 国产在线视频一区二区 | 中文字幕av高清 | 国产999久久 | 日韩欧美中文在线 | 日韩视频一区二区三区在线观看 | 色婷婷亚洲国产女人的天堂 | 免费av一区二区三区 | 精品免费av | 在线欧美a| 国产精品久久a | 国内精品国产三级国产在线专 | 一区二区三区四区在线播放 | 中文字幕日韩欧美 | 欧美日韩精品一区二区在线播放 | 日韩欧美一区二区三区免费观看 | 在线播放亚洲 | 日本一区视频在线观看 | 久久精品视频一区 | 国产精品免费观看 | 久久777| 国产99久 | 青青草国产在线 | 九九热有精品 | 国产日产精品一区二区三区四区 | www.蜜桃av| 视色视频在线观看 | 午夜欧美一区二区三区在线播放 | 日韩在线观看三区 | 亚洲国产成人在线 | 91精品国产日韩91久久久久久 | 91午夜精品一区二区三区 | 大香伊蕉在人线视频777 | 国产片久久 | 国产精品久久 | 亚洲国产视频网站 | 美女一区二区三区四区 | 伊人电影综合 | 亚洲欧美日韩在线一区 | 伊人欧美视频 | 99精品免费观看 | 综合色综合 | 国内精品久久久久 | 欧美一区二区三区四区视频 | 婷婷国产成人精品视频 | 欧美精品在欧美一区二区少妇 | 久久精品一区二区三区不卡牛牛 | 色婷婷国产精品综合在线观看 | 免费成人精品 | 在线看片日韩 | 亚洲毛片在线观看 | 中文字幕乱码一区二区三区 | 免费午夜电影 | 中国一级毛片免费 | 国产综合精品一区二区三区 | 一区二区三区久久久久久 | 亚洲一级毛片 | 免费看国产一级特黄aaaa大片 | 超碰97人人人人人蜜桃 | 亚洲视频自拍 | 在线成人av | 日韩理伦片在线观看视频播放 | 亚洲精品视 | aaaaaa毛片| 女朋友的闺蜜3韩国三级 | 日韩视频在线观看 | 成人夜晚看av| 免费观看黄a一级视频 | 国产高清美女一级a毛片久久 | 亚洲精品一区二区三区 | 欧美精产国品一二三区 | 成人黄色电影在线观看 | 色婷婷综合久久久中文字幕 | 好姑娘影视在线观看高清 | 国产精品久久久久久久久久免费看 | 欧美日韩不卡合集视频 | 午夜视频在线播放 | 中文字幕在线三区 | 97视频久久 | 精品久久久一区 | 成人免费淫片aa视频免费 | 精品久久久久国产免费 | 综合在线视频 | 狠狠综合久久av一区二区老牛 | 日本精品一区二区在线观看 | 国产成人免费视频网站高清观看视频 | 欧美在线播放一区二区三区 | 婷婷久 | 玖玖综合网 | 亚洲高清在线 | 日韩欧美高清dvd碟片 | 亚洲一区二区三区免费看 | 亚洲免费视频网站 | 久久精品久久久久久久久久久久久 | 美女午夜视频 | 久久精品一区视频 | 久久女人| 久久精品影视 | 黄网免费 | 久久不卡 | 欧美成人在线免费观看 | 日韩在线一区二区 | 亚洲午夜免费视频 | 一区二区三区福利视频 | 精品一区二区久久 | 国产精品久久久久久亚洲影视 | 成人精品免费视频 | 精品久久久久久久久久久院品网 | 成人在线观看av | 蜜桃视频一区二区三区 | 91亚洲国产成人久久精品网站 | 久久伊人一区 | 午夜窝窝 | 五月婷婷丁香 | 最新中文字幕在线 | 国产91网址 | 欧美aaaaa| 超碰国产一区 | 国产成人啪精品午夜在线观看 | 日韩和的一区二在线 | 九九视频在线观看视频6 | 久久久成人精品 | 精品美女在线观看视频在线观看 | 亚洲欧美一区二区三区久久 | 盗摄精品av一区二区三区 | 日韩在线播放网址 | 日韩午夜在线视频 | 狠狠搞狠狠搞 | 欧洲另类二三四区 | 三级黄色片在线播放 | 午夜精品久久久久久99热软件 | 一区二区免费视频 | 高清一区二区三区 | 国产女人爽到高潮免费视频 | 成人在线视频免费 | 国产精品视频 | 欧美成人一区二区三区 | 一道本一区| 天堂一区二区三区四区 | 欧美在线a | 成人在线片 | 日本一区二区精品视频 | 亚洲国产精品久久久久 | 男女精品视频 | 天天拍天天操 | 午夜无码国产理论在线 | 都市激情av| 四虎影音| 亚洲人免费视频 | 免费无遮挡www小视频 | 欧美九九 | 亚洲一区二区伦理 | 亚洲国产婷婷香蕉久久久久久99 | 成人国产免费视频 | 欧美黑人一级爽快片淫片高清 | 91久久久久久久久 | 又黄又爽的网站 | 精品久久香蕉国产线看观看亚洲 | 在线视频91| 亚洲另类视频 | 日韩视频中文字幕在线观看 | 欧美日韩成人在线播放 | 日韩av一区二区三区在线观看 | 国产亚洲一区二区三区在线观看 | 男女啪啪无遮挡 | 国产亚洲www | 日韩极品视频 | 在线观看成人av | 欧美区亚洲区 | 亚洲精品一二三区 | 午夜精品偷拍 | 四虎永久免费影视 | 在线一区二区免费 | av免费网 | 国产欧美日韩综合精品一区二区 | 99爱视频| 亚洲国产日韩在线 | av在线免费播放 | 国产高清在线精品一区二区三区 | 韩日精品| 国产精品久久久久久久一区探花 | 国产偷国产偷精品高清尤物 | 欧美久久a| 久久99精品久久久 | 精品久久99| 国产精品自产拍在线观看 | 毛片网在线观看 | 久久国产欧美一区二区三区精品 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 成人欧美一区二区三区 | 91在线精品视频 | 啪啪的网站 | 成人免费aaa| 一区二区三区欧美在线 | 亚洲伊人中文字幕 | 亚洲永久免费 | 91尤物网站网红尤物福利 | 互换娇妻呻吟hd中文字幕 | 超碰在线一区二区三区 | 不卡视频一区 | 国产成人精品一区二区三区在线 | 日韩av一区在线 | 三级在线免费 | 精品国产31久久久久久 | 久在线观看 | 91精品国产91久久久久久不卡 | 羞羞视频网站 | 成人免费视频网站 | 久久国产一区 | 久久毛片 | 日韩激情免费 | 亚洲久草在线 | 黄色日批视频 | 亚洲国产成人av好男人在线观看 | 91无吗 | 精品久久久久久亚洲精品 | 不卡的av电影 | 中文字幕久久精品 | 久久久精品日本 | jizz18毛片 | 久久99热精品免费观看牛牛 | 中文字幕一区二区三区四区不卡 | 久久激情综合 | 日本高清中文字幕 | 一区二区三区在线免费观看 | 日韩精品一区二区三区在线播放 | 99亚洲国产精品 | 少妇久久久 | 色婷婷久久 | 久草福利在线视频 | 中文字幕日韩欧美一区二区三区 | 国产一级做a爰片在线看免费 | 久久成人免费 | 国产欧美一区二区视频 | 99视频免费| av高清在线看 | 国产精品久久久久久亚洲影视 | 国产精品久久久久久久久免费 | 久久国产亚洲精品 | 国产伦精品一区二区三区四区视频 | 亚洲福利片 | 亚洲精品乱码久久观看网 | 日p视频免费看 | 午夜影院免费看 | 日韩1区 | 免费观看一级黄色片 | 欧美精品一区二区三区四区五区 | 国产一级片儿 | 国产成人免费在线 | 国产欧美在线 | 日本三级在线网站 | 国产三级电影 | 激情com | 国内精品视频一区 | 午夜天堂精品久久久久 | 91精品国产一区二区 | 国产高清在线精品 | 国产在线精品一区二区 | 韩国精品 | 欧美精品一区二区三区蜜桃视频 | 91网站在线播放 | 欧美日韩精品一区二区三区蜜桃 | 亚洲精品乱码久久久久久按摩观 | 国产一区二区在线观看视频 | 欧美一区二区三区精品 | 精品欧美一区二区三区久久久小说 | 午夜免费一区二区播放 | 亚洲一区中文字幕在线观看 | 一级欧美一级日韩 | 国产一区二区三区在线 | 国产成人av在线 | 久久久免费观看 | 久久久久中文字幕 | 99精品视频免费在线观看 | 国产免费久久 | 国产精品国产 | 福利精品视频 | 自拍视频在线观看免费 | 亚洲精品久久久久avwww潮水 | 欧美日韩视频一区二区 | 欧美在线激情 | 久久精品国产免费 | 精品免费国产一区二区三区 | 日批免费在线观看 | 欧美成人激情 | 精品视频在线观看一区二区三区 | 九九热热九九 | 日韩在线免费视频 | 国产精品久久久久久久久久妞妞 | av中文字幕在线播放 | 国产精品久久久久久久免费大片 | 国产亚洲精品精品国产亚洲综合 | 午夜成人免费电影 | 免费在线观看毛片网站 | 日韩精品免费在线观看 | 二区在线观看 | 亚洲香蕉精品 | 欧美精品在线观看 | a级性生活片 | 在线观看中文字幕亚洲 | 成人亚洲一区二区 | 国产精品美女在线观看 | 日韩h视频 | 精品自拍视频 | 九九热免费看 | 亚洲精品一区中文字幕乱码 | 97爱爱视频| 国产精品高清在线 | 91 在线观看| 久久久亚洲精品中文字幕 | 五月天婷婷综合 | 亚洲欧美国产精品专区久久 | 七龙珠z普通话国语版在线观看 | 龙珠z中文版普通话 | 成人精品视频在线观看 | 国内自拍偷拍视频 | 欧美一级网站 | 成人av观看 | 国产高清一级毛片在线不卡 | 亚洲国产精品久久 | 久久精品一区二区国产 | 欧美视频在线播放 | 欧美日韩中文 | 精品伦精品一区二区三区视频 | 91视频网 | 中文字幕视频在线 | 天天干夜夜拍 | 亚洲成人影院在线观看 | 欧美伊人 | 狠狠爱亚洲 | 久久综合热| 久草高清 | 2019天天干夜夜操 | 久久久欧美| 黑人xxx视频 | 欧美天堂在线观看 | 国产96视频| 国产精品美女视频一区二区三区 | 久久在线视频 | 国产黄色免费小视频 | 九九九视频 | av在线一区二区 | 天天舔天天干天天操 | 亚洲精品区 | 亚洲国产精品人人爽夜夜爽 | aaa级片 | 亚洲久久在线 | 日韩性在线 | 国产成人久久精品一区二区三区 | 在线视频不卡一区 | 国产视频久久 | 超碰人人插 | 久草在线| 国产精品一区二 | a毛片毛片av永久免费 | 99re在线观看视频 | 亚洲视频自拍 | 欧美日韩综合精品 | 在线播放亚洲 | 国产成人在线免费观看 | 午夜影院a | 免费视频一区二区三区在线观看 | 中文字幕一区在线观看视频 | 国产精品午夜电影 | av在线官网 | 午夜影院免费 | 成年人视频在线免费观看 | 成人激情视频在线播放 | 日日操操 | 日韩三级黄 | 国产一区二区三区四区在线观看 |