***********这方面的资料找了好久都没有找到,大家来帮帮忙,看看,顶都有分。。

huaxiaoyu 2006-08-09 03:57:46
小弟现在在做一个文件上传和下载的程序,服务器上web服务器,提供权限,我要想实现不管理是上传还是下载都能断点续传,大家帮帮忙,给点思路,最好是能给个demo,贴一点资料也可!先谢了!!
...全文
366 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huaxiaoyu 2006-08-24
  • 打赏
  • 举报
回复
对不起:改正
上传的我做到了,---->>>>>下载的我做到了,
huaxiaoyu 2006-08-24
  • 打赏
  • 举报
回复
上传的我做到了,而且支持断点续传,上传的也做到了,但不支持断点续传,我把代码贴出来,大家帮我看看,要怎么改才能让它支持断点续传
CString pURL;
CString SaveAsFilePath;
CString strRemoteFile;

pURL="http://192.168.0.18";
SaveAsFilePath="f:\\IM.rar";
strRemoteFile="IM.rar";

HINTERNET HttpNet;
HINTERNET hConnect;
HINTERNET hRequest;


CInternetSession session; //会话期对象)
CHttpConnection* pServer = NULL; // 指向服务器地址(URL)
CHttpFile * pHttpFile = NULL;//HTTP文件指针


CString strServerName; //服务器名
CString strObject; //查询对象名(http文件)
INTERNET_PORT nPort; //端口
DWORD dwServiceType; //服务类型
DWORD dwHttpRequestFlags =INTERNET_FLAG_NO_AUTO_REDIRECT;//请求标志
BOOL OK=AfxParseURL( //词法分析
pURL, //被分析URL串
dwServiceType, //服务类型,ftp,http等
strServerName, //服务器名
strObject, //URL中被查询对象
nPort ); //URL指定的端口,可能为空
OK=OK && (dwServiceType ==INTERNET_SERVICE_HTTP);
if (!OK)
{
AfxMessageBox("URL出错"); //报错
return;
}

CString strData="THIS IS A TEST";
pServer = session.GetHttpConnection(strServerName, nPort,"admin","admin"); //获得服务器名
if(pServer == NULL)
{
AfxMessageBox("连接失败!");
return;
}
//向服务器发送请求,建立http连接,
pHttpFile = pServer-> OpenRequest(CHttpConnection::HTTP_VERB_PUT,
strRemoteFile,NULL, 1, NULL, NULL,dwHttpRequestFlags );



//pHttpFile->AddRequestHeaders("Content-Range");
if(pHttpFile == NULL)
{
AfxMessageBox("发送请求失败!");
return;
}

CFile myfile;
if( !myfile.Open(SaveAsFilePath, CFile::modeRead | CFile::typeBinary))
{
MessageBox("Unable to open file");
return;
}

int nLen = myfile.GetLength();
char *buffer = new char[nLen];
memset(buffer, 0, nLen);
myfile.Read(buffer, nLen);
myfile.Close();
pHttpFile->SendRequestEx(nLen);
pHttpFile->Write(buffer,nLen);
pHttpFile->EndRequest(0,NULL,1);

/* 以下这段是做断点续传时做的,每次传一个字节,但是到最后,传完后,服务器上只有最后一个字节。
TCHAR szBuf[SIZE]; //缓存
DWORD filesize=0; //文件大小
filesize=myfile.GetLength();

long len; //每个数据包的大小
long ffilesize=filesize;
//pHttpFile->Seek(0,CFile::begin);


while(ffilesize>0)
{
strcpy(szBuf,""); //清空缓存
len=ffilesize > SIZE ? SIZE : ffilesize;
myfile.Read(szBuf,len);
ffilesize-=len;
pHttpFile->SendRequestEx(sizeof(szBuf));
pHttpFile->Write(szBuf,sizeof(szBuf));
pHttpFile->EndRequest(0,NULL,1);
}
myfile.Close(); //善后工作

*/

pHttpFile ->Close();
pServer ->Close();
if (pHttpFile != NULL)
delete pHttpFile;
if (pServer != NULL)
delete pServer;
session.Close();
AfxMessageBox("文件上传成功!");
ozn_switch 2006-08-15
  • 打赏
  • 举报
回复
学习~~~~~~~``
snowbirdfly 2006-08-15
  • 打赏
  • 举报
回复
当然有了~~~
我这里倒是有个例子,是我和以前好友一起做的下载工具(模仿迅雷)~
要的话,给我留言 ~~~
huaxiaoyu 2006-08-14
  • 打赏
  • 举报
回复
能具体点吗?我也找到了几个函数,实现了上传与下载,但是还是没有做到断点续传!
我啃 2006-08-12
  • 打赏
  • 举报
回复
用WINSOCK控件啊,有相关的行为的呀
nFox18 2006-08-12
  • 打赏
  • 举报
回复
学习。。。
huaxiaoyu 2006-08-10
  • 打赏
  • 举报
回复
怎么没人观注呢,顶一下先....
ranqd 2006-08-10
  • 打赏
  • 举报
回复
用flashget开多线程从HTTP地址下一个DD,看flashget的日志就明白 了
zxcayumi 2006-08-10
  • 打赏
  • 举报
回复
学习

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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