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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 純pascal實現的isapi文件上傳程序 (2001年1月30.txt

?? delphi 編程技巧
?? TXT
字號:
純pascal實現的isapi文件上傳程序 (2001年1月30日) 

網友更新  分類:Internet   作者:lwm8246  推薦:lwm8246   閱讀次數:452  
(http://www.codesky.net)  

--------------------------------------------------------------------------------
//部份代碼來自 WWW 歡迎大家指教 lwm8246@fm365.com
環境: Server:delphi5.0 +NT4.0+IIS4.0
Client:486/16M win98
Client:









PATH:



FILE:







//Server

library ByHand; //2001-01-29

uses
SysUtils,
Classes,
ISAPI2,
byHand_Tools in 'byHand_Tools.pas';

{$R *.RES}



var Totalbytes,Avablebytes:integer;
filebuf:string;
Djs:string;

function GetDefaultPage : string;
begin
Result :=
'HTTP/1.0 200 OK' + crlf + crlf +
'' + crlf +
'' + crlf +
'' + crlf +
'' + crlf +
'
ISAPI "By Hand" - Default Page
' + crlf +
'
'+ FormatDateTime('dddd dd mmm yyyy hh:nn:ss' , Now) + '
' + crlf +
'
Total=  '+IntToStr( Totalbytes)+
'

Avable=  '+intTostr(Avablebytes)+
'

path=  '+GetFieldValue('path',filebuf,djs)+
'

filename=  '+GetFileName('file',filebuf,djs)+
'

SaveToFile=  '+'c:\'+extractfileName(GetFileName('file',filebuf,djs))+
'' + crlf +
'' + crlf +
'' + crlf;
end;




{==============================================================================}
{=============================Export functions=================================}
{==============================================================================}

function GetExtensionVersion(var Ver : THSE_VERSION_INFO): Boolean; stdcall;
begin
Ver.dwExtensionVersion := 1;
Ver.lpszExtensionDesc := 'ISAPI By Hand Example 2.0';
Result := True;
end;

function HttpExtensionProc(var ECB : TEXTENSION_CONTROL_BLOCK): LongInt; stdcall;
var
WriteClient : TWriteClientProc;
Content : string;
ContentLength : Cardinal;
ReadClient: TReadClientProc;
intTemp:Integer;
ActualReadCount:cardinal;
Str:string; intS,intE:Integer;
Curpos:integer;
begin
Totalbytes:=ECB.cbTotalBytes;
Avablebytes:=ECB.cbAvailable;
//=====================Read binary data to filebuf================================
Setlength(Filebuf,ECB.cbTotalBytes);
Move(ECB.lpbData^,Filebuf[1],ECB.cbAvailable);
@ReadClient:=@Ecb.ReadClient;
intTemp:=Totalbytes-Avablebytes;
curPos:=Avablebytes;
if TotalBytes>AvableBytes then
repeat
ActualReadCount:=ECB.cbAvailable;
ReadClient(ECB.ConnID,@filebuf[curpos+1],ActualReadCount);
curPos:=curPos+ActualReadCount;
intTemp:=intTemp-ActualReadCount;
if intTemp<1 then break;
Until false;

//=================SaveToFile======================================
Str:=crLf+'Content-Type:'+char($20);
intS:=strPos(str,filebuf,0);
intS:=strPos(crLf+crLf,filebuf,intS);
intS:=intS+4;
intE:=strPos(crLf+DJS,Filebuf,Length(filebuf)-100);
str:=byHand_tools.GetFileName('file',FileBuf,Djs);
str:=extractfileName(str);
SaveToFile('c:\'+str,Filebuf,intE-intS,intS);

//==============================================================


{ Get the callback function }
@WriteClient := @ECB.WriteClient;

try
Content := GetDefaultPage;
ContentLength := Length(Content);
{ Send To Client }
WriteClient(ECB.ConnID, PChar(Content), ContentLength, 0);
Result := HSE_STATUS_SUCCESS;
except
on E: Exception do
begin
Content := SendErrorPage(E);
ContentLength := Length(Content);
WriteClient(ECB.ConnID, PChar(Content), ContentLength, 0);
Result := HSE_STATUS_ERROR;
end;
end;
end;

exports
GetExtensionVersion,
HttpExtensionProc;

begin
end.

//============================================================

unit byHand_Tools;

interface
uses SysUtils,Classes;

const
crlf = #13#10;

Function SaveToFile(const FileName:string;const Buf:string;
Count:Integer;startPos:integer=1):boolean;//2001-01-29
function SendErrorPage(E: Exception) : string;
function StrPos(const FindString, SourceString: string; StartPos: Integer): Integer;
function GetFieldValue(const Name,Filebuf,DJS:string):string;
function GetFileName(const Name,Filebuf,DJS:string):string;



implementation

Function SaveToFile(const FileName:string;const Buf:string;
Count:Integer;startPos:integer=1):boolean;//2001-01-29
var F:File;
begin
Result:=false;
if FileName='' then exit;
if (count<1) or (startPos<1) or (startPos>length(buf)) then exit;
try
try
Result:=true;
AssignFile(F,FileName);
ReWrite(F,1);
if (startPos+Count)>Length(buf) then Count:=Length(Buf)-StartPos;
BlockWrite(F,Buf[startPos],Count);
except
result:=false;
end;
finally
closeFile(F);
end;
End;


function SendErrorPage(E: Exception) : string;
begin
Result :=
'HTTP/1.0 200 OK' + crlf + crlf +
'' + crlf +
'' + crlf +
'' + crlf +
'' + crlf +
'

' + E.ClassName + ': ' + E.Message + '
' + crlf +
'' + crlf +
'' + crlf +
'' + crlf;
end;

function StrPos(const FindString, SourceString: string; StartPos: Integer): Integer;
asm //find http://www......
PUSH ESI
PUSH EDI
PUSH EBX
PUSH EDX
TEST EAX,EAX
JE @@qt
TEST EDX,EDX
JE @@qt0
MOV ESI,EAX
MOV EDI,EDX
MOV EAX,[EAX-4]
MOV EDX,[EDX-4]
DEC EAX
SUB EDX,EAX
DEC ECX
SUB EDX,ECX
JNG @@qt0
XCHG EAX,EDX
ADD EDI,ECX
MOV ECX,EAX
JMP @@nx
@@fr: INC EDI
DEC ECX
JE @@qt0
@@nx: MOV EBX,EDX
MOV AL,BYTE PTR [ESI]
@@lp1: CMP AL,BYTE PTR [EDI]
JE @@uu
INC EDI
DEC ECX
JE @@qt0
CMP AL,BYTE PTR [EDI]
JE @@uu
INC EDI
DEC ECX
JE @@qt0
CMP AL,BYTE PTR [EDI]
JE @@uu
INC EDI
DEC ECX
JE @@qt0
CMP AL,BYTE PTR [EDI]
JE @@uu
INC EDI
DEC ECX
JNE @@lp1
@@qt0: XOR EAX,EAX
@@qt: POP ECX
POP EBX
POP EDI
POP ESI
RET
@@uu: TEST EDX,EDX
JE @@fd
@@lp2: MOV AL,BYTE PTR [ESI+EBX]
CMP AL,BYTE PTR [EDI+EBX]
JNE @@fr
DEC EBX
JE @@fd
MOV AL,BYTE PTR [ESI+EBX]
CMP AL,BYTE PTR [EDI+EBX]
JNE @@fr
DEC EBX
JE @@fd
MOV AL,BYTE PTR [ESI+EBX]
CMP AL,BYTE PTR [EDI+EBX]
JNE @@fr
DEC EBX
JE @@fd
MOV AL,BYTE PTR [ESI+EBX]
CMP AL,BYTE PTR [EDI+EBX]
JNE @@fr
DEC EBX
JNE @@lp2
@@fd: LEA EAX,[EDI+1]
SUB EAX,[ESP]
POP ECX
POP EBX
POP EDI
POP ESI
end;

function GetFieldValue(const Name,Filebuf,DJS:string):string;
const bjstr='Content-Disposition:'+char($20)+'form-data;'+char($20)+'name=';
var Str:string;intS,intE:Integer;
begin
Str:=DJS+crLf+bjstr+'"'+Name+'"';
intS:=strPos(str,filebuf,0);
if intS>0 then
begin
intS:=intS+Length(str)+4;
intE:=strPos(crlf+djs,filebuf,intS);
if (intE-intS)>0 then
begin
setLength(Result,intE-intS);
Move(filebuf[intS],Pointer(Result)^,intE-intS);
end;
end;
End;

function GetFileName(const Name,Filebuf,DJS:string):string;
const bjstr='Content-Disposition:'+char($20)+'form-data;'+char($20)+'name=';
var Str:string;intS,intE:Integer;
begin
Str:=DJS+crLf+bjstr+'"'+Name+'"';
intS:=strPos(str,filebuf,0);
Result:='';
if intS>0 then
begin
intS:=strPos('"',filebuf,intS+Length(str));
intE:=strPos('"',filebuf,intS+1);
if (intE-IntS)>0 then
begin
setLength(Result,intE-intS);
Move(filebuf[intS+1],Pointer(Result)^,intE-intS-1);
intS:=Pos('"',Result);
Result:=copy(Result,intS+1,Length(Result)-1);
end;
end;
End;



END.

//====================================================

 
 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡二卡三卡| 国产精品女主播av| 亚洲大片精品永久免费| 色天天综合久久久久综合片| 国产精品美女一区二区在线观看| 国产一区二区三区日韩| 精品国产免费人成电影在线观看四季| 亚洲第一在线综合网站| 91麻豆精品国产无毒不卡在线观看| 亚洲一区二区三区四区在线观看 | 18成人在线视频| 99re热这里只有精品视频| 亚洲丝袜制服诱惑| 欧美日韩一二三| 国产一区二区三区免费观看| 久久亚洲精品国产精品紫薇| 国产美女娇喘av呻吟久久| 国产日产欧产精品推荐色| 91丨porny丨首页| 日日摸夜夜添夜夜添亚洲女人| 91精品国产色综合久久| 国产精品一品二品| 亚洲一区二区不卡免费| 精品国产乱码久久久久久牛牛| 成人免费的视频| 婷婷六月综合亚洲| 中文字幕一区二| 国产日韩av一区| 欧美一区二区视频在线观看2022| 欧美aaaaa成人免费观看视频| 中文字幕精品在线不卡| 制服视频三区第一页精品| 成人免费毛片嘿嘿连载视频| 日日夜夜精品视频免费| 亚洲女与黑人做爰| 欧美激情综合网| 久久久久成人黄色影片| 欧美绝品在线观看成人午夜影视| 99久久精品情趣| 国产激情视频一区二区三区欧美 | 久久久久久久综合狠狠综合| 欧美色图激情小说| 色吊一区二区三区| 99精品视频一区二区三区| 国产一区二区主播在线| 丝袜脚交一区二区| 日韩精品一二三区| 日韩不卡手机在线v区| 亚洲bt欧美bt精品777| 亚洲aaa精品| 蜜臀久久99精品久久久画质超高清| 亚洲va天堂va国产va久| 亚洲高清久久久| 午夜精品成人在线| 久久国产成人午夜av影院| 精品一区二区三区在线观看国产| 三级欧美在线一区| 韩日欧美一区二区三区| 成人国产精品免费观看| 色综合一个色综合亚洲| 欧美特级限制片免费在线观看| 欧美综合亚洲图片综合区| 欧美日韩不卡视频| 国产欧美日韩视频在线观看| 国产女人18水真多18精品一级做| 亚洲人成影院在线观看| 久久国产乱子精品免费女| 国产成人av自拍| 欧美日韩视频一区二区| 国产性做久久久久久| 亚洲一区二区欧美日韩| 国产精品18久久久久久久久久久久| 91免费看`日韩一区二区| 欧美一区二区视频观看视频| 国产精品久久久久天堂| 日韩精品欧美精品| 99re视频精品| 国产午夜精品理论片a级大结局| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲日本一区二区三区| 国产一区二区三区| 91精选在线观看| 亚洲成人动漫在线免费观看| 国产69精品久久777的优势| 欧美一级黄色大片| 亚洲在线视频一区| 在线观看日韩电影| 亚洲精品亚洲人成人网| 99免费精品视频| 国产精品第四页| 国产91精品久久久久久久网曝门 | 国产精品欧美一级免费| 国产另类ts人妖一区二区| 欧美一卡二卡在线| 国产最新精品免费| 国产天堂亚洲国产碰碰| 国产成人日日夜夜| 国产精品视频一二三| 不卡的电影网站| 玉足女爽爽91| 在线观看91av| 国产一区二三区| 综合激情成人伊人| 欧洲人成人精品| 日韩成人伦理电影在线观看| 日韩欧美久久一区| 成人亚洲精品久久久久软件| 亚洲色图19p| 欧美一区二区视频在线观看 | 日韩欧美不卡在线观看视频| 经典三级在线一区| 国产精品理论片| 在线免费不卡电影| 精品一区二区三区免费视频| 久久精品人人做| 欧美性猛片xxxx免费看久爱| 久久99精品久久久| 成人免费一区二区三区视频| 欧美一区二区三区在线电影| 国产精品88av| 亚洲成人精品影院| 国产欧美日韩久久| 欧美人妖巨大在线| 99久久综合国产精品| 首页亚洲欧美制服丝腿| 国产精品毛片久久久久久久| 欧美一区二区网站| 在线视频欧美精品| a亚洲天堂av| 国产乱人伦偷精品视频免下载| 亚洲成人免费视| 亚洲最色的网站| 亚洲欧美日韩中文播放 | 精品国产露脸精彩对白| 欧美久久免费观看| 欧美日韩国产色站一区二区三区| 国产91在线|亚洲| 国模一区二区三区白浆| 美女网站色91| 蜜桃在线一区二区三区| 亚洲成人av一区二区三区| 亚洲午夜免费视频| 亚洲.国产.中文慕字在线| 亚洲激情自拍视频| 香蕉av福利精品导航| 一区二区三区视频在线看| 中文字幕在线不卡| 国产精品国产三级国产普通话99 | 精品sm捆绑视频| 久久亚洲精精品中文字幕早川悠里| 欧美精选一区二区| 日韩美女视频在线| 久久久久国产一区二区三区四区 | 国产v综合v亚洲欧| 91免费国产在线观看| 777a∨成人精品桃花网| 久久综合给合久久狠狠狠97色69| 6080国产精品一区二区| 精品欧美一区二区三区精品久久| 欧美成人精品高清在线播放| 日本一区二区免费在线 | 日韩三级中文字幕| 久久久另类综合| 一区二区三区日韩欧美精品| 日本视频一区二区| 高清国产一区二区三区| 91福利小视频| 精品日韩欧美一区二区| 亚洲精品第一国产综合野| 日本 国产 欧美色综合| 粉嫩蜜臀av国产精品网站| 欧美日韩免费不卡视频一区二区三区| 91精品蜜臀在线一区尤物| 国产欧美一区二区精品仙草咪| 亚洲第一激情av| 91日韩在线专区| 精品福利视频一区二区三区| 一区二区高清在线| 成人爱爱电影网址| 国产婷婷色一区二区三区四区| 婷婷中文字幕综合| 欧美系列在线观看| 中文字幕一区二区三区不卡 | 欧美国产精品久久| 精品亚洲国产成人av制服丝袜| 欧美婷婷六月丁香综合色| 国产精品国产三级国产三级人妇| 久久精品二区亚洲w码| 日本韩国欧美三级| 亚洲欧美日韩一区二区三区在线观看| 国产精品一区在线| 日韩欧美成人一区| 久久成人久久鬼色| 精品国产一区二区在线观看| 美女视频免费一区| 2023国产精品自拍| 国产成人三级在线观看| 中文字幕国产一区| 99久久综合99久久综合网站| 亚洲精品国产一区二区精华液 |