WinINet怎样进行HTTP上传、下载文件

dsdgdg 2012-08-07 05:03:31
http://www.codesky.net/article/200309/4172.html
不知道怎么调用?
...全文
137 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsdgdg 2012-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
上传文件

Delphi(Pascal) code

function HttpPostFile(Url, FileField, FileName: string): string;
const
Agent = 'SURE';
MaxLen = 1024 * 100; //在这里定义发送文件最大限制,100K
var
hSession, hOpenReq, hConnection……
[/Quote]
怎样调用呢?FileField是什么东西
orxor 2012-08-09
  • 打赏
  • 举报
回复
上传文件

function HttpPostFile(Url, FileField, FileName: string): string;
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;



5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧