亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? 用DELPHI為ASP開(kāi)發(fā)文件上載組件 (2000年.txt

?? delphi 編程技巧
?? TXT
字號(hào):
用DELPHI為ASP開(kāi)發(fā)文件上載組件 (2000年12月6日) 

本站更新  分類(lèi):   作者:王發(fā)軍  推薦:   閱讀次數(shù):619  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
  
  ASP(Active Server Page)是微軟公司的產(chǎn)品,由于它編程很容易上手,能快速開(kāi)發(fā)功能強(qiáng)大的
動(dòng)態(tài)網(wǎng)站,現(xiàn)在很多網(wǎng)站(特別是Intranet/Extranet內(nèi)部網(wǎng))采用了NT+IIS+ASP的模式,
使得ASP成為目前較為流行的網(wǎng)站開(kāi)發(fā)腳本語(yǔ)言。在WEB服務(wù)中,文件上載服務(wù)是一個(gè)很常見(jiàn)的
功能,而WIN9X下的PWS沒(méi)有提供相關(guān)組件;NT下的IIS提供了一個(gè)Post Acceptor組件,
但由于它要檢查用戶(hù)的WWW訪問(wèn)權(quán)限而變得不太好用;也可以從Internet上下載有關(guān)組件,但這些
大多都是商業(yè)組件,用于下載的是試用版,在使用時(shí)間或功能上都有限制。由于ASP可以調(diào)用標(biāo)準(zhǔn)
的OLE/COM組件,我們可以用VB/VC/DELPHI等高級(jí)編程工具根據(jù)我們自己的要求
來(lái)定制自己的ASP文件上載組件,滿(mǎn)足自己的應(yīng)用系統(tǒng)要求。
  下面將討論用DELPHI為ASP開(kāi)發(fā)文件上載組件的原理和具體實(shí)現(xiàn)過(guò)程。

一、文件上載的實(shí)現(xiàn)原理
  基于Web方式數(shù)據(jù)上傳,要遵從RFC1867標(biāo)準(zhǔn),上載的文件數(shù)據(jù)也不例外。如用下面HTML頁(yè)面
文件(delphiup.htm)選擇上載文件:


用DELPHI編寫(xiě)的文件上載組件實(shí)現(xiàn)文件上載



文件另存為:


請(qǐng)要選擇上載的文件:
 





  當(dāng)客戶(hù)端選擇了一個(gè)文件(如Test.TXT,其內(nèi)容為“這里是一個(gè)用于上載的文件的內(nèi)容。”)并按
“確認(rèn)上載”按鈕提交數(shù)據(jù)后,服務(wù)器端程序收到的數(shù)據(jù)將具有如下形式:
-----------------------------7cf1d6c47c#13#10
Content-Disposition: form-data; name="SaveAs"#13#10#13#10
NewFileName#13#10
-----------------------------7cf1d6c47c#13#10
Content-Disposition: form-data; name="FileData"; filename="D:\test.txt" 
Content-Type: text/plain#13#10#13#10
這里是一個(gè)用于上載的文件的內(nèi)容。#13#10
-----------------------------7cf1d6c47c#13#10
Content-Disposition: form-data; name="b1"#13#10#13#10
確認(rèn)上載#13#10
-----------------------------7cf1d6c47c-- 
其中,“-----------------------------7cf1d6c47c”是分界符,用于分隔表單(Form)中的各個(gè)域;
#13#10是回車(chē)換行符的DELPHI表示。我們可以這樣認(rèn)為,每個(gè)表單域的信息描述,都是以分界
符加一對(duì)回車(chē)換行符#13#10開(kāi)始;表單域名以“name="”開(kāi)始,以“"”為結(jié)束;表單域值以?xún)蓪?duì)回車(chē)
換行符#13#10#13#10開(kāi)始,以一對(duì)回車(chē)換行符#13#10#加分界符結(jié)束;文件名稱(chēng)以“filename="”開(kāi)始,
以“"”為結(jié)束。有了這些標(biāo)志,我們就可以獲取表單域的名稱(chēng)和值以及要上載的文件的名稱(chēng),從而實(shí)
現(xiàn)文件數(shù)據(jù)的讀取和存儲(chǔ)了。

二、文件上載的實(shí)現(xiàn)過(guò)程
  在理解上面提到的數(shù)據(jù)格式后,自己動(dòng)手編寫(xiě)一個(gè)文件上載組件對(duì)我們來(lái)說(shuō)已經(jīng)不是困難了。

  (一)開(kāi)始建立一個(gè)ASP組件的工程
     如果您對(duì)用DELPHI開(kāi)發(fā)OLE Automation Server的步驟不太熟悉的話,請(qǐng)參見(jiàn)《電子與
電腦》1999年第06期的一篇文章《用DELPHI開(kāi)發(fā)用于ASP的OLE Automation Server 》。
這里只簡(jiǎn)要介紹一下操作步驟。
  1、建立ActiveX Library工程
  在DELPHI中選擇菜單File=》New...,在“New Item”對(duì)話框的ActiveX選項(xiàng)卡中選擇
“ActiveX Library”,DELPHI會(huì)自動(dòng)創(chuàng)建一個(gè)DLL工程Project1。
  2、建立Automation組件
  在DELPHI中選擇菜單File=》New...,在“New Item”對(duì)話框的ActiveX選項(xiàng)卡中選
擇“Automation Object”;然后在“Automation Object Wizard”對(duì)話框中輸入Class Name
(如“UploadFile”),Instancing選擇“Multiple Instance”即可,單擊“OK”后DELPHI會(huì)自動(dòng)
創(chuàng)建一個(gè)TLB(Type Library)文件Project1_TLB.PAS和一個(gè)PAS(Unit)文件Unit1.PAS。在Type 
Library設(shè)計(jì)窗口中,將Project1改名為MyUpload,則該文件上載組件的OLE注冊(cè)碼為“MyUpload.UploadFile”。
  3、引入ASP類(lèi)型庫(kù)
  為了使用ASP的五個(gè)內(nèi)建對(duì)象(Request、Response、Server、Application、Session),需要引入
ASP類(lèi)型庫(kù)。我們主要利用Request對(duì)象讀取從客戶(hù)端傳遞到服務(wù)器端的數(shù)據(jù)。
  在Project菜單中選擇“Import Type Library”,在“Import Type Library”對(duì)話框的“Type 
Libraries”列表選擇“Microsoft Active Server Pages Object Library(Version 2.0)”(如果沒(méi)有這
個(gè)選項(xiàng),請(qǐng)確定您的計(jì)算機(jī)上安裝了IIS3以上或PWS4以上并且ASP.DLL已正確注冊(cè)),DELPHI
會(huì)自動(dòng)創(chuàng)建一個(gè)TLB文件ASPTypeLibrary_TLB.PAS,其中有我們需要的ASP對(duì)象類(lèi)型聲明。
  4、定義OnStartPage、OnEndPage過(guò)程
  當(dāng)在ASP頁(yè)面上用Server.CreateObject創(chuàng)建一個(gè)OLE對(duì)象實(shí)例時(shí),WEB服務(wù)器會(huì)調(diào)用其方法
OnStartPage,將ASP應(yīng)用環(huán)境信息傳遞給該對(duì)象,我們可以在該過(guò)程中獲取客戶(hù)端信息;當(dāng)在ASP
頁(yè)面中釋放一個(gè)OLE對(duì)象實(shí)例時(shí),WEB服務(wù)器會(huì)調(diào)用其方法OnEndPage,我們可以在該過(guò)程中進(jìn)行釋放
內(nèi)存等結(jié)束操作。在我們這個(gè)組件中,我們要用到其OnStartPage方法。
  OnStartPage方法應(yīng)該在Unit1.PAS中定義,OnStartPage的函數(shù)原型為:
procedure OnStartPage(AScriptingContext: IUnknown);
其中參數(shù)AScriptingContext是一個(gè)IScriptingContext類(lèi)型變量,包含五個(gè)屬性(Request、Response、
Server、Application、Session)分別對(duì)應(yīng)ASP的五個(gè)內(nèi)建同名對(duì)象。
  我們需要在TLB定義窗口(View=》Type Library)中,為IUploadFile增加方法OnStartPage,其
Declaration語(yǔ)句為“procedure OnStartPage(AScriptingContext: IUnknown);”。

  (二)提取客戶(hù)端上傳的數(shù)據(jù)
  該工作可以放在OnStartPage過(guò)程中進(jìn)行。
  利用AScriptingContext的屬性Request(類(lèi)型為IRequest)中的屬性TotalBytes(請(qǐng)求信息內(nèi)容長(zhǎng)度)
和方法BinaryRead可將客戶(hù)端上傳的請(qǐng)求信息數(shù)據(jù)讀取到一個(gè)Byte類(lèi)型的數(shù)組中,然后按RFC1867標(biāo)準(zhǔn)定
義的數(shù)據(jù)格式來(lái)分析和提取數(shù)據(jù)。
  1、首先定義TUploadFile的幾個(gè)私有變量
在單元文件UP01.PAS(由Unit1.PAS另存)中加入對(duì)ASPTypeLibrary_TLB.PAS的引用(Uses),
然后加入
private
FContentLength : LongInt;//請(qǐng)求信息內(nèi)容長(zhǎng)度
FContentData : Variant;//內(nèi)容數(shù)據(jù),以數(shù)組形式存儲(chǔ)請(qǐng)求信息內(nèi)容
FFileName, //要上載的文件名稱(chēng)
FDelimeter : string; //表單域分界符
FScriptingContext : IScriptingContext;//ASP處理上下文環(huán)境內(nèi)容
FFileDataStart, //文件數(shù)據(jù)開(kāi)始位置
FFileDataEnd : LongInt; //文件數(shù)據(jù)結(jié)束位置

  2、提取客戶(hù)端上傳的請(qǐng)求信息數(shù)據(jù)
//在OnStartPage事件中,獲取ASP上下文信息、請(qǐng)求信息內(nèi)容、表單域的分界符、文件數(shù)據(jù)
procedure TUploadFile.OnStartPage(AScriptingContext: IUnknown);
var
ARequest : IRequest; //WWW請(qǐng)求對(duì)象
AOleVariant : OleVariant; //記錄請(qǐng)求信息內(nèi)容長(zhǎng)度
intDelimterLength : integer;//分界符長(zhǎng)度
longIndex,ALongInt,longPos : LongInt;
ContentData : AnsiString;//請(qǐng)求信息內(nèi)容的字符串表示
strTemp : string;
FindEndOfFileData : boolean;//是否找到文件數(shù)據(jù)結(jié)束位置
begin
//提取客戶(hù)端上傳的請(qǐng)求信息數(shù)據(jù)
FScriptingContext := AScriptingContext as IScriptingContext;//獲取ASP上下文信息
ARequest := FScriptingContext.Request;//獲取WWW請(qǐng)求信息
FContentLength := ARequest.TotalBytes;//請(qǐng)求信息內(nèi)容長(zhǎng)度
//創(chuàng)建動(dòng)態(tài)數(shù)組,用于以數(shù)組形式存儲(chǔ)請(qǐng)求信息內(nèi)容
FContentData := VarArrayCreate( [0,FContentLength], varByte );
//將請(qǐng)求信息內(nèi)容存儲(chǔ)到數(shù)組中
AOleVariant := FContentLength;
FContentData := ARequest.BinaryRead( AOleVariant );//讀取請(qǐng)求信息內(nèi)容
//將請(qǐng)求信息內(nèi)容轉(zhuǎn)化為字符串,便于定位
ContentData := '';
for longIndex := 0 to FContentLength - 1 do
begin
ContentData := ContentData + chr( Byte( FContentData[ longIndex ] ));
if FContentData[ longIndex ] = 0 then break;//0表示內(nèi)容結(jié)束
end;

  3、獲取分界符、上載文件名稱(chēng)
//獲取表單域的分界符
longPos := pos( #13#10,ContentData );//回車(chē)換行符所在位置
FDelimeter := Copy( ContentData,1,longPos-1);//該位置之前的內(nèi)容為分隔符

//獲取帶源路徑的文件名稱(chēng),在請(qǐng)求信息內(nèi)容中,文件名稱(chēng)以
//filename="path/filename"的形式存儲(chǔ)
strTemp := 'filename="';//文件名稱(chēng)在“filename="”之后
longPos := pos( strTemp, ContentData );//獲取“filename="”位置
if longPos <= 0 then
begin
FFileName := '';
FFileDataStart := -1;
FFileDataEnd := -2;
exit;
end;
//獲取下個(gè)雙引號(hào)“"”之前的內(nèi)容,即帶源路徑的文件名稱(chēng)
longPos := longPos + length( strTemp );
strTemp := '';
for longIndex := longPos to FContentLength - 1 do
if ContentData[ longIndex ] <> '"' then
strTemp := strTemp + ContentData[ longIndex ]
else break;
FFileName := strTemp;

  4、獲取文件數(shù)據(jù)的在請(qǐng)求信息內(nèi)容中的開(kāi)始、結(jié)束位置
//文件數(shù)據(jù)開(kāi)始位置在文件名稱(chēng)后的第一個(gè)#13#10#13#10之后
delete( ContentData, 1, longIndex );
strTemp := #13#10#13#10;
FFileDataStart := longIndex + pos(strTemp, ContentData) + length(strTemp) - 1;

//文件數(shù)據(jù)結(jié)束位置在下一個(gè)#13#10和分界符之前
//由于文件數(shù)據(jù)可能包含非法字符,不能再用字符串定位函數(shù)POS
//查找下一個(gè)分界符的位置
FFileDataEnd := FFileDataStart;
intDelimterLength := length( FDelimeter );
FindEndOfFileData := false;
while FFileDataEnd <= FContentLength - intDelimterLength do
begin
FindEndOfFileData := true;
for ALongInt := 0 to intDelimterLength - 1 do
if Byte( FDelimeter[ ALongInt + 1 ] ) <> 
FContentData[ FFileDataEnd + ALongInt ] then
begin
FindEndOfFileData := false;
break;
end;
if FindEndOfFileData then break;
FFileDataEnd := FFileDataEnd + 1;
end;
if not FindEndOfFileData then FFileDataEnd := FFileDataStart - 1//未找到分界符
else FFileDataEnd := FFileDataEnd - 3;//分界符,向前跳過(guò)#13#10
end;

  (三)向ASP程序傳遞信息
  在進(jìn)行了(二)的操作之后,我們的上載組件可以根據(jù)ASP程序的要求向其傳遞數(shù)據(jù)了。目前
可以提供的數(shù)據(jù)有:客戶(hù)端源文件名稱(chēng)(FFileName,含路徑)、文件大小(FFileDataEnd-FFileDataStart+1)。
首先應(yīng)該在TLB設(shè)計(jì)窗口中聲明如下兩個(gè)方法GetFileName和GetFileSize。
  1、返回客戶(hù)端源文件名稱(chēng)(含路徑)
//返回客戶(hù)端源文件名稱(chēng)(含路徑)
function TUploadFile.GetFileName: OleVariant;
begin
result := FFileName;//客戶(hù)端源文件名稱(chēng)(含路徑)
end;
  2、返回文件大小
//返回文件大小(Bytes)
function TUploadFile.GetFileSize: OleVariant;
begin
result := FFileDataEnd - FFileDataStart + 1;
end;

  (四)保存文件
  在進(jìn)行了(二)的操作之后,我們的上載組件可以根據(jù)ASP程序的要求保存文件了。首先應(yīng)該在
TLB設(shè)計(jì)窗口中聲明如下兩個(gè)方法SaveFileAs和SaveFile。
  1、按指定文件名稱(chēng)保存文件
//按指定的文件名稱(chēng)保存文件,參數(shù)FileName為指定的文件名稱(chēng),返回值True表示文件保存成功
function TUploadFile.SaveFileAs(FileName: OleVariant): OleVariant;
var
longIndex : LongInt;
AFile : file of byte;//以二進(jìn)制的形式保存文件
byteData : Byte;
begin
result := true;
try
assign( AFile, FileName );
rewrite( AFile );
for longIndex := FFileDataStart to FFileDataEnd do
begin
byteData := Byte( FContentData[ longIndex ] );
Write( AFile, byteData );
end;
CloseFile( AFile );
except
result := false;
end;
end;
  2、按缺省文件名稱(chēng)保存文件
//按缺省文件名稱(chēng)保存文件,將文件以同名文件保存在調(diào)用頁(yè)面所在目錄
function TUploadFile.SaveFile: OleVariant;
var
CurrentFilePath : string;
begin
//獲取調(diào)用頁(yè)面所在目錄
CurrentFilePath := FScriptingContext.Request.ServerVariables['PATH_TRANSLATED'];
CurrentFilePath := ExtractFilePath( CurrentFilePath );
//保存文件
result := SaveFileAs( CurrentFilePath + ExtractFileName( FFileName ));
end;

三、上載組件應(yīng)用舉例
  在我們的例子中,DelphiUp.HTM是文件上載界面,DelphiUp.ASP用來(lái)執(zhí)行文件上載操作。
DelphiUp.ASP的代碼如下:





四、幾點(diǎn)說(shuō)明
  1、由DELPHI自動(dòng)生成的源代碼編譯的DLL文件大小有215K,可以在
ASPTypeLibrary_TLB.PAS的Interface段中將Uses中的單元除ActiveX外全部刪除,在
MyUpload_TLB.PAS中刪除Uses中所有單元,則生成的DLL文件大小可減少到61K。
  2、以上方法同樣適用于CGI程序,不過(guò)要用TWebRequest對(duì)象。

以上程序在PWIN98+Delphi3.0+PWS4.0下調(diào)試通過(guò)。
(作者:王發(fā)軍 wangfajun@163.net http://wangfajun.163.net) 
Welcome to www.net990.net ,2000,7,24

 
 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久97超碰色| 亚洲一区二区三区小说| 国产一区二区三区视频在线播放| 欧美精品日韩综合在线| 日韩av一级片| 久久久久久99久久久精品网站| 国产精品影视天天线| 中文一区二区完整视频在线观看| av不卡一区二区三区| 亚洲色图欧美偷拍| 欧美日韩性生活| 久久精品国产澳门| 中文字幕一区二区不卡| 欧美色图在线观看| 久久国产剧场电影| 亚洲欧美怡红院| 欧美日韩精品三区| 国产一区二区三区在线观看免费| 中文字幕精品一区二区三区精品| 欧美系列亚洲系列| 国产乱淫av一区二区三区| 国产精品免费观看视频| 欧美日韩免费电影| 国产一区二区三区蝌蚪| 亚洲男人都懂的| 日韩欧美国产高清| 91免费视频网址| 麻豆一区二区三区| 自拍偷在线精品自拍偷无码专区 | 91精品国产一区二区| 国产美女av一区二区三区| 亚洲精品你懂的| 精品国产一区二区三区不卡| 91亚洲资源网| 精品一区二区三区在线视频| 亚洲精品视频一区| 久久综合色综合88| 欧美在线观看视频一区二区三区| 国产乱码精品1区2区3区| 夜夜爽夜夜爽精品视频| 久久精品亚洲精品国产欧美 | www.av精品| 久久成人羞羞网站| 亚洲成人免费影院| 国产精品入口麻豆九色| 欧美成人欧美edvon| 欧美三区免费完整视频在线观看| 国产成人av电影免费在线观看| 日本不卡1234视频| 亚洲午夜羞羞片| 中文字幕制服丝袜一区二区三区 | 欧美日韩在线综合| 成人av在线一区二区| 精品亚洲成a人在线观看| 亚洲国产一区在线观看| 亚洲三级免费观看| 日本一区二区三区国色天香 | 欧美视频日韩视频| 日本精品视频一区二区| 成人app软件下载大全免费| 狠狠色丁香九九婷婷综合五月| 天堂久久久久va久久久久| 亚洲永久免费av| 中文字幕日韩欧美一区二区三区| 国产午夜精品在线观看| 精品剧情v国产在线观看在线| 欧美另类久久久品| 色中色一区二区| 色婷婷综合中文久久一本| 91色综合久久久久婷婷| 99久久伊人精品| www.成人在线| 色哟哟国产精品| 欧美性xxxxx极品少妇| 欧美天堂一区二区三区| 91久久精品一区二区三| 欧美亚洲另类激情小说| 欧美丝袜丝nylons| 欧美日韩国产小视频在线观看| 欧美性感一类影片在线播放| 欧美日韩综合在线| 欧美日韩1234| 日韩一级二级三级精品视频| 日韩三级在线观看| 精品国产乱码久久久久久1区2区| 精品国产一区二区三区不卡| 久久精品一区蜜桃臀影院| 国产日韩欧美综合在线| 中文字幕一区av| 亚洲v精品v日韩v欧美v专区| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产一区三区三区| 国产中文字幕一区| www.在线成人| 欧美综合一区二区| 欧美一区二区三区视频在线| 精品欧美一区二区在线观看| 国产欧美精品日韩区二区麻豆天美| 欧美激情艳妇裸体舞| 自拍视频在线观看一区二区| 亚洲精品视频在线观看网站| 午夜精品福利视频网站| 精品一区二区久久| 99国产一区二区三精品乱码| 欧美日韩免费电影| 久久亚洲精精品中文字幕早川悠里| 国产精品伦理在线| 亚洲无线码一区二区三区| 美女脱光内衣内裤视频久久网站 | 国产精品电影院| 亚洲成人激情社区| 国产乱人伦偷精品视频免下载 | 欧美午夜精品久久久| 宅男噜噜噜66一区二区66| 久久久久综合网| 亚洲午夜电影网| 国产91色综合久久免费分享| 欧美性做爰猛烈叫床潮| 久久精品男人天堂av| 亚洲一卡二卡三卡四卡无卡久久| 久久99精品国产.久久久久久 | 欧美日韩免费电影| 中文字幕免费在线观看视频一区| 亚洲成人激情社区| 99视频在线精品| 日韩一区二区三区视频在线 | 91精品国产综合久久久久| 亚洲国产激情av| 日本亚洲视频在线| 99re在线视频这里只有精品| 日韩欧美精品在线| 夜夜精品视频一区二区| 国产精品一区二区三区网站| 欧美精品在线一区二区三区| 中文字幕亚洲视频| 激情av综合网| 欧美精品乱码久久久久久按摩| 亚洲欧洲日韩av| 国产一区二区女| 欧美一区二区二区| 一区二区三区av电影| 成人动漫av在线| 久久综合色8888| 免费在线视频一区| 制服丝袜成人动漫| 亚洲免费在线电影| av毛片久久久久**hd| 久久欧美一区二区| 国内精品伊人久久久久影院对白| 欧美精品在线一区二区三区| 亚洲五码中文字幕| 在线精品视频一区二区| 亚洲素人一区二区| 丁香婷婷深情五月亚洲| 久久免费精品国产久精品久久久久| 午夜激情综合网| 精品视频免费看| 亚洲国产精品一区二区久久| 色哟哟欧美精品| 亚洲一区二区在线播放相泽| 91九色02白丝porn| 一区二区免费看| 在线视频一区二区三| 亚洲欧美另类久久久精品| 成人自拍视频在线| 亚洲国产高清aⅴ视频| 粉嫩一区二区三区性色av| 欧美精品一区二区三区在线播放| 久久激情五月婷婷| 精品99999| 国产成人在线影院| 国产精品久久久久永久免费观看| 成人一区在线看| 亚洲视频资源在线| 色婷婷国产精品久久包臀| 一区二区三区成人在线视频| 在线观看一区二区视频| 午夜精品成人在线视频| 欧美成va人片在线观看| 国产精品一区二区无线| 国产精品久久久爽爽爽麻豆色哟哟| 91免费在线播放| 亚洲va国产天堂va久久en| 日韩一区二区在线免费观看| 久久99精品国产.久久久久| 国产欧美日韩不卡免费| 色综合色综合色综合色综合色综合 | 天堂va蜜桃一区二区三区漫画版| 91麻豆精品国产91久久久久久久久| 秋霞午夜av一区二区三区| 精品国产免费一区二区三区四区| 国产福利一区二区| 亚洲制服丝袜一区| 欧美一卡二卡三卡| 成人综合激情网| 午夜精品福利一区二区三区av| 精品国产自在久精品国产| av激情成人网| 日韩电影免费在线看| 国产精品久久久一本精品 |