请问用http协议下载文件的时候怎么获得下载文件的真实大小 if(!HttpQueryInfo(hConnect,HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwByteToRead,&dwSizeOfRq,NULL))我是这样做的可是每次得到的dwByteToRead值都是一个固定的值并不是真实的文件大小请问应该怎么做啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try { DWORD BufLen=HTTPGET_BUFFER_MAX; DWORD dwIndex=0; bool RetQueryInfo=HttpQueryInfo(FhRequest, HTTP_QUERY_CONTENT_LENGTH, Buffer, &BufLen, &dwIndex); if( RetQueryInfo==false) throw(Exception("Error:HttpQueryInfo")); DoOnStatusText("ok:HttpQueryInfo"); int FileSize=StrToInt(Buffer); // 文件大小 DoOnGetFileSize(FileSize); }catch(Exception &exception) { DoOnStatusText(exception.Message); } return FileSize; DWORD BufLen=HTTPGET_BUFFER_MAX; DWORD dwIndex=0; bool RetQueryInfo=HttpQueryInfo(FhRequest, HTTP_QUERY_CONTENT_LENGTH, Buffer, &BufLen, &dwIndex); int FileSize=StrToInt(Buffer); // 文件大小 char Buffer[HTTPGET_BUFFER_MAX+4]; // 数据缓冲区 兄弟提示如下错误HTTPGET_BUFFER_MAX' : undeclared identifier dwIndex = 4;if(!HttpQueryInfo(hConnect,HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwByteToRead,&dwSizeOfRq,NULL)) 举个例子:#define HTTPGET_BUFFER_MAX 200char Buffer[HTTPGET_BUFFER_MAX+4]; // 数据缓冲区CString FileName="download/8051.zip";CString HostName="soft.laogu.com";HINTERNET FhSession; // 会话句柄HINTERNET FhConnect; // http连接句柄HINTERNET FhRequest; // http请求句柄FhSession=InternetOpen("http-get-demo", INTERNET_OPEN_TYPE_PRECONFIG, NULL,NULL, 0); FhConnect=InternetConnect(FhSession, HostName, INTERNET_DEFAULT_HTTP_PORT, NULL,NULL,INTERNET_SERVICE_HTTP, 0, 0);const char *FAcceptTypes = "*/*"; FhRequest = HttpOpenRequest(FhConnect, "GET", FileName, "HTTP/1.1", NULL, &FAcceptTypes, INTERNET_FLAG_RELOAD, 0); HttpSendRequest(FhRequest, NULL, 0, NULL, 0); DWORD BufLen=HTTPGET_BUFFER_MAX; DWORD dwIndex=0; bool RetQueryInfo=HttpQueryInfo(FhRequest, HTTP_QUERY_CONTENT_LENGTH, Buffer, &BufLen, &dwIndex); int FileSize=StrToInt(Buffer); InternetCloseHandle(FhRequest); InternetCloseHandle(FhConnect);InternetCloseHandle(FhSession); FhSession=NULL; FhConnect=NULL; FhRequest=NULL;取得结果是133k 请问怎么用程序实现双面扫描? ITypeLib.GetTypeInfoType()方法不明白? 求助:OpenGL中Sutherland-Hodgman多边形剪裁算法 如何得到当前窗口的句柄? 在ATL/COM中如何抛出错误信息,让调用者可以捕获 C#与C++的效率之争(转贴2) 对话框缩放的问题 菜鸟问题 很菜的问题:MFC 中怎么定义和使用全局变量? CString 变量如何转换为int? net-snmp set命令执行错误 求PsSetCreateProcessNotifyRoutine API的相关资料!!
DWORD dwIndex=0;
bool RetQueryInfo=HttpQueryInfo(FhRequest, HTTP_QUERY_CONTENT_LENGTH, Buffer, &BufLen, &dwIndex);
if( RetQueryInfo==false)
throw(Exception("Error:HttpQueryInfo")); DoOnStatusText("ok:HttpQueryInfo");
int FileSize=StrToInt(Buffer); // 文件大小
DoOnGetFileSize(FileSize); }
catch(Exception &exception)
{ DoOnStatusText(exception.Message); }
return FileSize;
DWORD BufLen=HTTPGET_BUFFER_MAX;
DWORD dwIndex=0;
bool RetQueryInfo=HttpQueryInfo(FhRequest, HTTP_QUERY_CONTENT_LENGTH,
Buffer, &BufLen, &dwIndex);
int FileSize=StrToInt(Buffer); // 文件大小
if(!HttpQueryInfo(hConnect,HTTP_QUERY_CONTENT_LENGTH | HTTP_QUERY_FLAG_NUMBER,(LPVOID)&dwByteToRead,&dwSizeOfRq,NULL))
#define HTTPGET_BUFFER_MAX 200
char Buffer[HTTPGET_BUFFER_MAX+4]; // 数据缓冲区
CString FileName="download/8051.zip";
CString HostName="soft.laogu.com";
HINTERNET FhSession; // 会话句柄
HINTERNET FhConnect; // http连接句柄
HINTERNET FhRequest; // http请求句柄
FhSession=InternetOpen("http-get-demo", INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL, 0);
FhConnect=InternetConnect(FhSession, HostName, INTERNET_DEFAULT_HTTP_PORT, NULL,NULL,INTERNET_SERVICE_HTTP, 0, 0);
const char *FAcceptTypes = "*/*"; FhRequest = HttpOpenRequest(FhConnect, "GET",
FileName,
"HTTP/1.1",
NULL,
&FAcceptTypes,
INTERNET_FLAG_RELOAD,
0);
HttpSendRequest(FhRequest, NULL, 0, NULL, 0);
DWORD BufLen=HTTPGET_BUFFER_MAX;
DWORD dwIndex=0;
bool RetQueryInfo=HttpQueryInfo(FhRequest,
HTTP_QUERY_CONTENT_LENGTH,
Buffer, &BufLen, &dwIndex);
int FileSize=StrToInt(Buffer);
InternetCloseHandle(FhRequest);
InternetCloseHandle(FhConnect);
InternetCloseHandle(FhSession);
FhSession=NULL; FhConnect=NULL; FhRequest=NULL;
取得结果是133k