读书人

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

发布时间: 2012-09-04 14:19:30 作者: rapoo

WinINet怎样进行HTTP上传、下载文件
http://www.codesky.net/article/200309/4172.html
不知道怎么调用?

[解决办法]
上传文件

Delphi(Pascal) code
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; 

读书人网 >.NET

热点推荐