WinINet怎样进行HTTP上传、下载文件 http://www.codesky.net/article/200309/4172.html不知道怎么调用? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 上传文件function HttpPostFile(Url, FileField, FileName: string): string;constAgent = 'SURE';MaxLen = 1024 * 100; //在这里定义发送文件最大限制,100KvarhSession, hOpenReq, hConnection: HInternet;SendBuf: array[0..MaxLen - 1] of char;SendLen: DWord;RecBuf: array[0..99] of char;RecLen, dum: DWORD;sHeader: string;UrlHost, UrlFile,Bound: string;beginresult := '';dum := 0;UrlHost := ExtractUrlAddress(Url);UrlFile := ExtractUrlFileName(Url);SendLen := BuildBound(FileField, FileName, @SendBuf[0],Bound);if SendLen < 1 then exit;hSession := InternetOpen(PChar(Agent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); //INTERNET_FLAG_RAW_DATAtry if hSession = nil then result := 'Error openning internet' else begin hConnection := InternetConnect(hSession, PChar(UrlHost), INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0); try if hConnection = nil then result := 'Error openning internet connection' else begin hOpenReq := HTTPOpenRequest(hConnection, 'POST', PChar(UrlFile), 'HTTP/1.1', nil, nil, INTERNET_FLAG_RELOAD, 0); try if hOpenReq = nil then result := 'Error openning internet request' else begin sHeader := 'Host: ' + UrlHost; HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD); sHeader := 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'; HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD); sHeader := 'Accept-Language: en-us'; HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD); sHeader := 'Content-Type: multipart/form-data;boundary='+Bound; HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD); sHeader := 'Accept-Encoding: gzip, deflate'; HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD); sHeader := 'Connection: Keep-Alive'; HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD); sHeader := 'Cache-Control: no-cache'; HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD); HTTPSendRequest(hOpenReq, nil, 0, @SendBuf, SendLen); RecLen := SizeOf(RecBuf); HTTPQueryInfo(hOpenReq, HTTP_QUERY_STATUS_TEXT, @RecBuf, RecLen, dum); result := string(RecBuf); end; finally InternetCloseHandle(hOpenReq); end; end; finally InternetCloseHandle(hConnection); end; end;finally InternetCloseHandle(hSession);end;end; 怎样调用呢?FileField是什么东西 关于指针 Delphi 中 TIndUDPServer 关闭时报错 用Active := False 关闭. TClientDataset 过滤,修改问题! 急! 关于websnap.......... char是什么函数,是属于哪个对象下的? 两个问题 为什么非要卸载钩子? 怎样去掉控件的焦点? 關于是否Delphi開發數據庫較好??? 大家谈谈Delphi、C++,VB哪个好 查询
const
Agent = 'SURE';
MaxLen = 1024 * 100; //在这里定义发送文件最大限制,100K
var
hSession, hOpenReq, hConnection: HInternet;
SendBuf: array[0..MaxLen - 1] of char;
SendLen: DWord;
RecBuf: array[0..99] of char;
RecLen, dum: DWORD;
sHeader: string;
UrlHost, UrlFile,Bound: string;
begin
result := '';
dum := 0;
UrlHost := ExtractUrlAddress(Url);
UrlFile := ExtractUrlFileName(Url);SendLen := BuildBound(FileField, FileName, @SendBuf[0],Bound);
if SendLen < 1 then
exit;
hSession := InternetOpen(PChar(Agent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0); //INTERNET_FLAG_RAW_DATA
try
if hSession = nil then
result := 'Error openning internet'
else begin
hConnection := InternetConnect(hSession, PChar(UrlHost), INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
try
if hConnection = nil then
result := 'Error openning internet connection'
else begin
hOpenReq := HTTPOpenRequest(hConnection, 'POST', PChar(UrlFile), 'HTTP/1.1', nil, nil, INTERNET_FLAG_RELOAD, 0);
try
if hOpenReq = nil then
result := 'Error openning internet request'
else begin
sHeader := 'Host: ' + UrlHost;
HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader := 'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader := 'Accept-Language: en-us';
HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader := 'Content-Type: multipart/form-data;boundary='+Bound;
HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader := 'Accept-Encoding: gzip, deflate';
HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader := 'Connection: Keep-Alive';
HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
sHeader := 'Cache-Control: no-cache';
HttpAddRequestHeaders(hOpenReq, PChar(sHeader), Length(sHeader), HTTP_ADDREQ_FLAG_ADD);
HTTPSendRequest(hOpenReq, nil, 0, @SendBuf, SendLen);
RecLen := SizeOf(RecBuf);
HTTPQueryInfo(hOpenReq, HTTP_QUERY_STATUS_TEXT, @RecBuf, RecLen, dum);
result := string(RecBuf);
end;
finally
InternetCloseHandle(hOpenReq);
end;
end;
finally
InternetCloseHandle(hConnection);
end;
end;
finally
InternetCloseHandle(hSession);
end;
end;