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

ArkTS(3.0與3.1)前端和SpringBoot后端文件上傳示例(Request.upload)

開發 前端
此帖主要講解通過開發文檔示例代碼寫一個完整Demo,方便初學者理解開發文檔內容。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

前言

此帖主要講解通過開發文檔示例代碼寫一個完整Demo,方便初學者理解開發文檔內容,大家都知道3.0使用的是FA模式、3.1使用的是Stage模式,所以同樣是文件上傳,代碼寫法上有些不一樣,開發文檔也不一樣,比如在3.1下,可以在HarmonyOS Developer > 文檔 > 指南 > 開發下找到文件上傳下載示例代碼,而在3.0下,就找不到相應指南開發了,只能在HarmonyOS Developer > 文檔 > API參考 > ArkTS API參考找到@ohos.request (上傳下載)文檔,為了實現一個完整文件上傳Demo,后端是少不了的,這里我使用了我平常工作中用到的SpringBoot開發后端,為了驗證文件上傳接口是否正常,使用Thymeleaf寫一個簡單的前端頁面來測試接口,先保證后端文件上傳接口是正常的,這樣其它前端調用就可以排除后端文件上傳接口問題,專心調試前端代碼,希望小伙伴通過此貼學習到文件上傳同時,參考此思路也可以自己完成其它示例代碼完成Demo。

效果

ArkTS(3.0與3.1)前端和SpringBoot后端文件上傳示例(Request.upload)-開源基礎軟件社區

知識點

ArkTS(3.0)文件管理(前端)

  1. 此版本使用的是FA模式、配置文件名是config.json 由于文件上傳需要網絡,需要添加權限:ohos.permission.INTERNET,默認支持https,如果要支持http,需要在config.json里增加network標簽,屬性標識 “cleartextTraffic”: true。所以config.json要添加的內容以下:
{
  "app": {...},
  "deviceConfig": {
    "default": {
      "network": {
        "cleartextTraffic": true
      }
    }
  },
  "module": {
    "reqPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}
  1. 文件上傳頁面就一個index.ets文件,里面包含UI和調用后端接口,代碼如下:
import request from '@ohos.request';
import featureAbility from '@ohos.ability.featureAbility';
import fileio from '@ohos.fileio';

@Entry
@Component
struct Index {
  @State btnLabel: string = '提交文件'
  private uploadTask: request.UploadTask

  aboutToAppear() {
    // 獲取應用文件路徑
    var context = featureAbility.getContext();
    context.getCacheDir().then((data) => {
      console.info("xx ======================>getCacheDirPromsie====================>");
      console.info("xx ====>data====>" + JSON.stringify(data));

      // 新建一個本地應用文件
      let fd = fileio.openSync(data + '/test.txt', 0o102, 0o666);
      fileio.writeSync(fd, 'upload file test by army');
      fileio.closeSync(fd);
    });
  }

  aboutToDisappear() {
    this.uploadTask.off("progress")
  }

  uploadFile() {
    // 上傳任務配置項
    let uploadConfig = {
      url: 'http://111.114.238.134:8740/file/upload',
      header: { key1: 'Content-Type', key2: 'multipart/form-data' },
      method: 'POST',
      files: [
        { filename: 'test.txt', name: 'test', uri: 'internal://cache/test.txt', type: 'txt' }
      ],
      data: [
        { name: 'fileId', value: 'FP000008' }
      ]
    }

    // 將本地應用文件上傳至網絡服務器
    try {
      this.btnLabel = '文件上傳中...'
      request.upload(uploadConfig)
        .then((data) => {
          this.btnLabel = '文件上傳成功'
          this.uploadTask = data
          console.info('xx Success to request the upload. Cause: ' + JSON.stringify(data));
          // uploadTask = data;
          this.uploadTask.on("progress", (uploadedSize, totalSize) => {
            console.info('xx 上傳進度值是:' + uploadedSize + ', 總大小:' + totalSize)
          })

        }).catch((err) => {
        this.btnLabel = '文件上傳失敗'
        console.error('xx Failed to request the upload. Cause: ' + JSON.stringify(err));
      })
    } catch (err) {
      this.btnLabel = '文件上傳失敗'
      console.error(`xx Invoke uploadFile failed, code is ${err.code}, message is ${err.message}`);
    }

  }

  build() {
    Column({space: 30}) {
      Text('上傳文件實例:')
        .width('100%')
        .height(50)
        .fontSize(24)
        .textAlign(TextAlign.Center)
      Button('提交文件')
        .onClick(() => {
          this.uploadFile()
        })
        .width('80%')
        .height(50)
        .fontSize(24)
    }.width('100%').height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }
}

ArkTS(3.1)文件管理(前端)

  1. 此版本使用的是Stage模式、配置文件名是module.json5 由于文件上傳需要網絡,需要添加權限:ohos.permission.INTERNET,在3.1不用配置,就支持http和https,當前上傳應用文件功能,僅支持上傳應用緩存文件路徑(cacheDir)下的文件。所以module.json5要添加的內容以下:
{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
    ]
  }
}
  1. 文件上傳頁面就一個index.ets文件,里面包含UI和調用后端接口,代碼如下:
import common from '@ohos.app.ability.common';
import fs from '@ohos.file.fs';
import request from '@ohos.request';
import hash from '@ohos.file.hash';


// 獲取應用文件路徑
let context = getContext(this) as common.UIAbilityContext;

@Entry
@Component
struct Index {
  @State btnLabel: string = '提交文件'
  private uploadTask: request.UploadTask

  aboutToAppear() {
    let cacheDir = context.cacheDir;

    // 新建一個本地應用文件
    let file = fs.openSync(cacheDir + '/test.txt', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
    fs.writeSync(file.fd, 'upload file test by API9');
    fs.closeSync(file);
  }

  aboutToDisappear() {
    this.uploadTask.off("complete")
  }

  uploadFile() {

    // 上傳任務配置項
    let uploadConfig = {
      url: 'http://111.114.238.134:8740/file/upload',
      header: { key1: 'Content-Type', key2: 'multipart/form-data' },
      method: 'POST',
      files: [
        { filename: 'test.txt', name: 'test', uri: 'internal://cache/test.txt', type: 'txt' }
      ],
      data: [
        { name: 'fileId', value: 'FP000008' }
      ]
    }

    // 將本地應用文件上傳至網絡服務器
    try {
      this.btnLabel = '文件上傳中...'
      request.uploadFile(context, uploadConfig)
        .then((data) => {
          this.btnLabel = '文件上傳成功'
          this.uploadTask = data
          this.uploadTask.on('complete', (taskStates) => {
            for (let i = 0; i < taskStates.length; i++) {
              console.info(`xx upload complete taskState: ${JSON.stringify(taskStates[i])}`);
            }
          });
        })
        .catch((err) => {
          this.btnLabel = '文件上傳失敗'
          console.error(`xx Invoke uploadFile failed, code is ${err.code}, message is ${err.message}`);
        })
    } catch (err) {
      this.btnLabel = '文件上傳失敗'
      console.error(`xx Invoke uploadFile failed, code is ${err.code}, message is ${err.message}`);
    }
  }
  
  build() {
    Column({space:30}) {
      Text('上傳文件實例:')
        .width('100%')
        .height(50)
        .fontSize(24)
        .textAlign(TextAlign.Center)
      Button(this.btnLabel)
        .onClick(() => {
          this.uploadFile()
        })
        .width('80%')
        .height(50)
        .fontSize(24)
    }
    .width('100%').height('100%')
    .justifyContent(FlexAlign.Center)
    .alignItems(HorizontalAlign.Center)
  }
}

SpringBoot和Thymeleaf(后端)

  1. 后端首先列出pom.xml文件,里面包含項目依賴jar配置,比如web、thymeleaf依賴,內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.army</groupId>
    <artifactId>file-manage</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>file-manage</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  1. 前端調用接口文件Controller代碼如下:
@RestController
@RequestMapping("/file")
@Slf4j
public class FileController {
    @Autowired
    FileService fileService;

    @PostMapping("/upload")
    public StandardResponse upload(String fileId, MultipartHttpServletRequest multiPartRequest) {
        log.info("**Upload File Controller!");

        FileCriteria criteria = new FileCriteria();
        criteria.setFileId(fileId);

        try {
            //upload file
            Iterator<String> itr =  multiPartRequest.getFileNames();
            MultipartFile mpf = null;

            while(itr.hasNext()){
                mpf = multiPartRequest.getFile(itr.next());
                break;
            }
            byte[] fileByteArr = null;
            if (null != mpf && !mpf.isEmpty()) {
                String originalFileName = mpf.getOriginalFilename();
                log.info(originalFileName);
                criteria.setFileName("");
                String fileExtension = FilenameUtils.getExtension(originalFileName);
                criteria.setFileExtension(fileExtension);
                fileByteArr = mpf.getBytes();
                criteria.setFileByteArray(fileByteArr);

                criteria.setFileName(originalFileName);
            }
        } catch (IOException e) {
            e.printStackTrace();
            log.error(e.getMessage());
        }

        return fileService.uploadFile(criteria);
    }

}
  1. 后端業務邏輯代碼,也就是文件上傳處理邏輯Service代碼如下:
    (1)業務接口:
public interface FileService {
    StandardResponse uploadFile(FileCriteria criteria);

    String saveFile(FileCriteria criteria);
}

(2)業務實現類:

@Service
@Slf4j
public class FileServiceImpl implements FileService {
    @Value("${project.root.path}")
    private String rootPath = "rootPath";
    @Value("${project.baseUrl}")
    private String baseUrl;

    @Override
    public StandardResponse uploadFile(FileCriteria criteria) {
        String filePath = this.saveFile(criteria);
        String imgPath = baseUrl + "filePath/" + filePath;

        StandardResponse standardResponse = new StandardResponse();
        standardResponse.setSuccess(true);
        standardResponse.setStatusCode("100");
        standardResponse.setStatusDesc("上傳成功");
        standardResponse.setData(imgPath);
        return standardResponse;
    }

    @Override
    public String saveFile(FileCriteria criteria) {
        log.info("上傳文件開始!");
        String pictureId = IdUtils.getId("FP");
        String fileName = pictureId + "." + criteria.getFileExtension();
        criteria.setFileName(fileName);


        String filePath = sourceFile(criteria);
        log.info("File Path: " + filePath);
        log.info("上傳文件結束!");
        return filePath;
    }

    private String sourceFile(FileCriteria criteria) {
        byte[] attachmentFileByteArray = criteria.getFileByteArray();
        if (null != attachmentFileByteArray) {

            log.info("1.1.創建根目錄.");
            String basePath = rootPath + this.genDatePath();
            File basePathFolder = new File(basePath);
            if (!basePathFolder.exists()) basePathFolder.mkdirs();
            log.info("根目錄: " + basePath);

            File file = new File(basePath + File.separator + criteria.getFileName());
            log.info("1.2.保存源文件 - 絕對路徑: " + file.getAbsolutePath());

            try {
                FileCopyUtils.copy(attachmentFileByteArray, file);
                log.info("1.3.1.保存源文件 - 保存成功 !!!");

                String relativePath = this.genDatePath() + File.separator + criteria.getFileName();

                return relativePath;
            } catch (IOException e) {
                log.info("1.3.2.保存源文件 - 保存失敗 !!!");
                file.deleteOnExit();
                return "";
            }
        }
        return "";
    }

    private String genDatePath(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String yyyyMMdd = sdf.format(new Date());

        return yyyyMMdd;
    }
}
  1. 配置文件
server:
  port: 8740

project:
  root:
    path: /var/tomcat/file-manage/filePath/
  baseUrl: http://111.114.238.134:8740/
  1. 訪問域名或IP加端口訪問到Thymeleaf頁面,要添加一個Controller跳轉
@Controller
public class IndexController {

    @GetMapping("/")
    public String Index() {
        return "index";
    }
}
  1. 在templates目錄下創建index.htm頁面文件,這里的index名要和上面Controller返回“index”名一致,才能跳轉過去,index.html代碼如下:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>文件上傳</title>
</head>
<body>
<p>單文件上傳</p>
<form method="post" action="/file/upload" enctype="multipart/form-data">
    <input type="text" name="fileId" value="FP00001">
    <p><input type="file" name="file00"></p>
    <input type="submit" value="提交">
</form>

</body>
</html>

ArkTS(3.0與3.1)前端和SpringBoot后端文件上傳示例(Request.upload)-開源基礎軟件社區

ArkTS(3.0與3.1)前端和SpringBoot后端文件上傳示例(Request.upload)-開源基礎軟件社區

上面圖片就是Thymeleaf頁面,上傳文件成功后效果。

總結

通過此貼學習到文件上傳3.0與3.1的不同處,同時也學習到了后端開發流程,其實寫這個貼子之前,是一個小伙伴問到我關于文件上傳問題,由于之前我寫的實例里,也沒有用到文件上傳功能,于是我就用最新API9也就是Stage模式寫了一個Demo給他參考,然后他通過參考我的Demo,學會了,可惜他現在開發的項目是用API8的,由于開發模式不一樣,他遇到了問題,于是我在用API8寫了一個Demo給他參考,最后他的項目也實現了文件上傳。

文章相關附件可以點擊下面的原文鏈接前往下載:

 https://ost.51cto.com/resource/2729。

https://ost.51cto.com/resource/2730。

https://ost.51cto.com/resource/2731。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區
相關推薦

2017-12-01 10:13:42

前端操作上傳

2009-11-16 10:57:51

PHP上傳文件代碼

2024-02-02 09:14:55

TCP協議Socket編程WPF

2018-11-06 21:50:09

前端Html腳本語言

2013-01-15 15:01:17

紅帽RHEV3.0RHEV3.1

2013-05-23 15:48:25

紅帽RHEV3.0 RHEV3.1

2013-01-15 13:27:05

紅帽

2020-04-02 20:07:17

前端vuenote.js

2012-02-15 09:45:35

RHEV微軟紅帽

2012-05-25 10:41:33

StrutsDWRJava

2021-03-26 08:16:32

SpringbootWebsocket前端

2021-03-26 11:34:22

前端后端工程師

2024-11-12 09:54:23

2012-03-27 11:08:23

Java

2009-06-22 16:59:33

POJOSpringEJB 3.0

2024-07-30 09:08:32

2021-05-06 15:08:40

開發前端后端

2014-02-17 17:47:16

前端后端架構

2018-04-20 16:15:42

Koa2上傳下載

2015-09-23 14:07:12

前端與后端架構實例
點贊
收藏

51CTO技術棧公眾號

2025韩国大尺度电影| 日本黄色片一级片| 老司机久久精品| 丰满肉肉bbwwbbww| 手机亚洲手机国产手机日韩| 成人福利视频在线看| 中文字幕日韩免费视频| 国产一区在线免费| 中文字幕在线有码| 亚洲免费看片| 中文字幕第一区二区| 欧美性在线视频| 麻豆精品国产传媒av| 97caopor国产在线视频| 特黄特色欧美大片| 亚洲一区二区五区| 97免费资源站| 朝桐光av在线| 日本久久成人网| 午夜精品久久久久久久99樱桃| www国产亚洲精品| 国产精品久久久精品四季影院| 麻豆精品av| 偷拍一区二区三区| 久久久一本精品99久久精品| 日韩av一二三区| 卡通动漫精品一区二区三区| 欧美日韩一区二区在线观看视频| 日本一区免费在线观看| 免费一级suv好看的国产网站| xxxxxx欧美| 久久久亚洲欧洲日产国码αv| 欧美一级淫片播放口| 久久久久久久麻豆| 国产精品亚洲欧美一级在线| 亚洲日本在线视频观看| 91在线中文字幕| 久草资源在线视频| 精品欠久久久中文字幕加勒比| 欧美色综合网站| 久久久久狠狠高潮亚洲精品| 男人久久精品| 美腿丝袜亚洲三区| 久久av在线看| 亚洲一二三四五| 涩涩在线视频| 国产精品视频九色porn| 91中文字幕在线| 最新中文字幕在线观看视频| 97久久夜色精品国产| 亚洲人成人99网站| 五月天开心婷婷| 草草影院在线| 国产亚洲欧美激情| 91欧美精品午夜性色福利在线| 欧美丰满艳妇bbwbbw| 丝袜美腿一区二区三区动态图| 日韩一区二区三区视频在线| 欧美久久久久久久久久久久久| 人人九九精品| 激情图片小说一区| 高清在线视频日韩欧美| 一级肉体全黄裸片| 亚洲国产一区二区三区网站| 黑人欧美xxxx| 亚洲免费av网| 免费a级在线播放| av综合在线播放| 国产综合视频在线观看| 日韩黄色a级片| 亚洲国产婷婷| 久久激情视频免费观看| 免费成人蒂法网站| 国产不卡精品| 日韩一区二区三区免费观看| 日批视频免费看| 精品久久久网| 午夜精品久久久久影视| 免费在线a视频| 成人免费网站在线观看视频| 久久久久久久久伊人| 青青成人在线| 欧美r级在线| 亚洲综合另类小说| 欧美亚洲视频一区| 亚洲精品一线| 成人欧美一区二区三区黑人麻豆| 久久久久久久久久久久久久久久av | 久久久噜噜噜久久中文字幕色伊伊| 久久久亚洲综合网站| 电影av一区| www.av精品| 日韩av电影免费在线观看| 调教视频免费在线观看| 久久综合成人精品亚洲另类欧美| 亚洲综合在线做性| 五月天婷婷在线播放| 国产精品一区二区三区四区| 国产精品自在线| www.日韩一区| 国产亚洲毛片| 91黄色8090| 日本在线免费观看| 日韩精品免费专区| 国产ts人妖一区二区三区| 一级片免费网址| 国产一区日韩一区| 欧美老女人性生活| 日韩欧美综合视频| 久久国产精品久久久久久电车| 97久久精品人人澡人人爽缅北| 欧美精品一区二区蜜桃| 欧美亚洲三区| 国产精品www色诱视频| 中文字幕激情小说| 国产精品视频久久一区| 国产主播喷水一区二区| 天堂在线一二区| 94色蜜桃网一区二区三区| 国产精品亚洲一区| 天堂中文资源在线| 亚洲一区二区三区四区的| 青青草av网站| 日韩欧乱色一区二区三区在线 | 在线免费观看av片| 蜜桃av一区二区在线观看| 国产精品嫩草在线观看| 黄色在线免费| 一区二区三区精品久久久| 欧美日韩在线免费播放| 日韩av影院| 久久久久久久久久久免费精品| 国产污视频在线看| 羞羞答答国产精品www一本| 亚洲伊人一本大道中文字幕| 高清日韩av电影| 一本色道久久加勒比精品 | 日韩福利电影在线| 久久99精品久久久久久青青日本| 午夜小视频福利在线观看| 欧美日韩免费在线视频| 夜夜爽久久精品91| 久久动漫网址| 久久久亚洲国产| www.色婷婷.com| 99国产精品久| 免费看国产一级片| 欧美做受69| 欧美一区第一页| 亚洲色欧美另类| 欧美三级xxx| 国产成人美女视频| 日韩1区2区| 欧美精品久久久久久久免费观看| 91精品视频免费在线观看 | 91免费视频网站| 日本免费视频在线观看| 欧美日韩国产欧美日美国产精品| 成都免费高清电影| 亚洲激情中文在线| 欧美综合一区第一页| 91福利在线观看视频| 成人免费一区二区三区视频 | 在线日韩三级| 精品国产视频在线| 日本一区二区三区免费视频| 成人美女在线观看| 亚洲欧美日韩精品久久久 | 成人爽a毛片一区二区| 亚洲国产一二三| 国产又粗又长又爽| 丝瓜av网站精品一区二区| 亚洲最大的免费| 羞羞视频在线免费国产| 欧美精品一区二区高清在线观看 | 国产精品伦一区二区三级视频| 奇米视频7777| 欧美激情一级片一区二区| 欧美在线视频网站| 69久久精品| 欧美小视频在线观看| 日本综合在线观看| 国产精品综合| 亚洲欧美日韩精品久久久| 秋霞影院一区| 久久国产精品偷| 亚洲视频在线免费播放| 亚洲精品乱码久久久久久日本蜜臀| 色哟哟精品视频| 亚洲伊人春色| 欧美自拍大量在线观看| 在线免费观看黄| 精品国产一区二区精华| 国产91av在线播放| 亚洲午夜免费视频| 呻吟揉丰满对白91乃国产区| 久热re这里精品视频在线6| 伊人情人网综合| 国产三级一区| 国产做受高潮69| 在线激情免费视频| 亚洲激情在线观看视频免费| 久久午夜无码鲁丝片午夜精品| 韩国理伦片一区二区三区在线播放| 奇米777四色影视在线看| 亚洲三级电影| 久久久久久久久爱| 97在线观看免费观看高清 | 国产精品免费精品一区| 久久精品国产77777蜜臀| 精品国产综合久久| 不卡一本毛片| 色偷偷偷综合中文字幕;dd| 天堂а√在线中文在线新版 | 色乱码一区二区三区88| 成人啪啪18免费游戏链接| 亚洲一区国产| 日韩精品综合在线| 精品视频在线播放一区二区三区| 国产一区二区日韩| 乱子伦一区二区三区| 亚洲午夜免费福利视频| 操她视频在线观看| 久久综合久久久久88| 亚洲国产欧美日韩在线| 亚洲激情av| 亚洲欧美99| 欧美a级网站| 92看片淫黄大片欧美看国产片| 亚洲成人激情社区| 一本色道久久88综合亚洲精品ⅰ| 69视频免费在线观看| 亚洲人精品午夜| 国产亚洲精品精品精品| 94色蜜桃网一区二区三区| 樱花草www在线| 国产剧情一区| 91精品久久久久久久久久久久久久 | 一区二区黄色| 亚洲影院在线看| 在线天堂资源| 日韩亚洲第一页| 日韩三级电影网| 精品久久国产字幕高潮| 国产精品theporn动漫| 国产精品国产a| 不卡的在线视频| 视频一区国产视频| 日本三区在线观看| 国产精品videosex性欧美| 91中文精品字幕在线视频| 国产精品无码久久久久| 国产精品欧美日韩久久| 淫片在线观看| 亚洲欧美日韩精品| 国产高清在线免费| 欧美高清hd18日本| 婷婷久久综合网| 国产精品美女久久久久久2018| 极品蜜桃臀肥臀-x88av| 国产日韩高清在线| 久久亚洲AV无码专区成人国产| 丰满白嫩尤物一区二区| 亚洲 欧美 日韩 国产综合 在线| 中文字幕亚洲精品乱码| 成人在线观看网址| 成人18视频在线观看| 国产极品jizzhd欧美| 成视频免费观看在线看| 精品国产一区二区三区久久久狼| 99中文字幕一区| 中文欧美日本在线资源| 日本视频在线观看| 欧美另类第一页| 澳门成人av网| 国产成人高清激情视频在线观看| 精品欧美日韩精品| 97在线看福利| 自拍偷拍亚洲视频| 国产精品电影久久久久电影网| 四虎永久精品在线| 91久久精品国产91久久性色tv| 91蝌蚪精品视频| 午夜精品久久17c| 爱看av在线| 欧美尤物巨大精品爽| 麻豆精品蜜桃| 国产精品成人一区二区三区| 开心激情综合| 免费日韩电影在线观看| 国产一区二区三区视频在线| 91在线短视频| 精品欠久久久中文字幕加勒比| 国产一区二区三区黄| 日本女优一区| 久久国产精品亚洲va麻豆| 国产精品欧美在线观看| 少妇高潮大叫好爽喷水| 99精品免费视频| 麻豆一区二区三区视频| 激情综合久久| 亚洲熟妇av日韩熟妇在线| 天堂成人国产精品一区| 天天操狠狠操夜夜操| 丁香六月综合激情| 黑人狂躁日本娇小| 亚洲一二三区视频在线观看| 手机在线看片1024| 日韩手机在线导航| 色鬼7777久久| 久久亚洲精品成人| 中文字幕免费高清电视剧网站在线观看| **欧美日韩vr在线| 日韩毛片网站| 久久国产精品久久| 亚洲国产裸拍裸体视频在线观看乱了中文 | 自拍偷拍亚洲在线| 国产精品69xx| 国产精品天天狠天天看| 欧美激情影院| 91制片厂免费观看| 老鸭窝亚洲一区二区三区| 亚洲国产精品三区| 久久一夜天堂av一区二区三区| 国产午夜手机精彩视频| 日韩欧美在线免费| 亚洲人妻一区二区三区| 欧美另类高清videos| 992tv国产精品成人影院| 欧美成人在线免费观看| 亚洲视频综合| 国产九九九视频| 亚洲色图视频免费播放| 精品久久久久久久久久久国产字幕 | 中文字幕免费观看| 亚洲福利精品在线| 大桥未久在线播放| 亚洲一区二区三区乱码aⅴ| 久久91成人| 亚洲欧洲一二三| 国产视频一区在线观看一区免费| 黄页网站在线看| 一区二区三区在线观看欧美| 一区二区三区亚洲视频| 亚洲视频免费一区| 欧美成人免费电影| 国产精品av电影| 色老板在线视频一区二区| 欧美日韩性生活片| 成人手机电影网| 久久一级黄色片| 亚洲精品久久久久久久久久久久| 最新国产露脸在线观看| 亚洲最大av网站| 亚洲调教视频在线观看| av影片在线播放| 亚洲精品视频在线| 黑人精品一区二区三区| 久久99精品国产99久久6尤物| 欧美男男gaygay1069| 熟女视频一区二区三区| 国内精品国产三级国产a久久| 在线小视频你懂的| 欧美理论片在线| 久草中文在线观看| 日本精品视频在线播放| 欧美在线免费看视频| 黄色片视频在线| 亚洲女同女同女同女同女同69| 国产三级午夜理伦三级| 九九久久综合网站| 天堂一区二区三区四区| 91免费视频网站在线观看| 久久久国产精品午夜一区ai换脸| jizz国产在线观看| 中文字幕亚洲综合久久| 国产精品视频一区二区三区综合 | 激情综合激情| 免费成人蒂法网站| 欧美日韩国产小视频| 老司机免费在线视频| 亚洲自拍在线观看| 国产九九精品| 99自拍偷拍视频| 精品久久久久久综合日本欧美| 国产伦久视频在线观看| 国产精品久久久久91| 亚洲欧美色图| 国产a级黄色片| 色综合久久天天| 菠萝菠萝蜜在线视频免费观看| 国产二区一区| 国产综合欧美| 成人国产精品久久久网站| 欧美日韩亚洲丝袜制服| 美足av综合网| 99视频日韩| 香蕉成人久久| 亚洲精品电影院| 亚洲国产精品久久|