HTTP上传文件需要服务器端有何程序?

naiveC 2008-09-11 10:00:27
写了一个HTTP上传文件的程序,但是在PC服务器端无上传的文件,客户端程序函数返回值都正常。
是否服务器端要运行什么程序?
我用的IIS5.1,HTTP功能正常。
...全文
344 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzy2003 2008-09-18
  • 打赏
  • 举报
回复
参考下如下代码:
bool Cmycom::UseHttpSendReqEx(HINTERNET hConnect, TCHAR *upFile,LPCSTR lServerFile)
{
INTERNET_BUFFERS BufferIn = {0};
DWORD dwBytesRead;
DWORD dwBytesWritten;
BYTE pBuffer[1024]; // Read from file in 1K chunks
BOOL bRead, bRet;

BufferIn.dwStructSize = sizeof( INTERNET_BUFFERS );

HINTERNET hRequest = HttpOpenRequest (hConnect, "PUT",
lServerFile/*"/data/findata/fin2.miu"*/, NULL, NULL, NULL, 0, 0);
if (!hRequest)
{
printf("Failed to open request handle: %lu\n", GetLastError ());
return FALSE;
}

HANDLE hFile = CreateFile (upFile, GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("\nFailed to open local file %s.", upFile);
return FALSE;
}

BufferIn.dwBufferTotal = GetFileSize (hFile, NULL);
printf ("File size is %d\n", BufferIn.dwBufferTotal );

if(!HttpSendRequestEx( hRequest, &BufferIn, NULL, HSR_INITIATE, 0))
{
printf( "Error on HttpSendRequestEx %lu\n",GetLastError() );
return FALSE;
}

DWORD sum = 0;
do
{
if (!(bRead = ReadFile (hFile, pBuffer, sizeof(pBuffer),
&dwBytesRead, NULL)))
{
printf ("\nReadFile failed on buffer %lu.",GetLastError());
break;
}
if (!(bRet=InternetWriteFile( hRequest, pBuffer, dwBytesRead,
&dwBytesWritten)))
{
printf ("\nInternetWriteFile failed %lu", GetLastError());
break;
}
sum += dwBytesWritten;
}
while (dwBytesRead == sizeof(pBuffer)) ;

CloseHandle (hFile);
printf ("Actual written bytes: %d\n", sum);

if(!HttpEndRequest(hRequest, NULL, 0, 0))
{
printf( "Error on HttpEndRequest %lu \n", GetLastError());
return FALSE;
}
return TRUE;
}
TaiJi1985 2008-09-13
  • 打赏
  • 举报
回复
到网上搜 “无组件上传” 一大堆代码。
glyc 2008-09-12
  • 打赏
  • 举报
回复
在iis上写一个ISAPI处理你的请求呀。
naiveC 2008-09-12
  • 打赏
  • 举报
回复
用的就是PUT或POST命令啊,但是服务器端没有上传的文件啊。
mzy2003 2008-09-12
  • 打赏
  • 举报
回复
有Web服务器就行了,可以使用Http协议的PUT命令来上传文件.
naiveC 2008-09-12
  • 打赏
  • 举报
回复
要怎么写这么个页面呢?HTML还是ASP?
  • 打赏
  • 举报
回复
要上传文件就要post一个请求,比如post到没个页面,如果服务器不支持,就不行了。
naiveC 2008-09-12
  • 打赏
  • 举报
回复
看来必须得写服务器端程序了。
大虾们:谁能给提供一个啊?
photosir 2008-09-11
  • 打赏
  • 举报
回复
服务器需要一个响应程序,不要自己写,什么apache之类的应该都可以支持。你只需要模仿提交文件http协议就可以
jameshooo 2008-09-11
  • 打赏
  • 举报
回复
改成FTP上传吧,IIS中一般都有FTP功能的
Jeffrey84 2008-09-11
  • 打赏
  • 举报
回复
只有IIS不行啊,你还有有基于你上传文件URL的处理程序啊
比如你传到
http://localhost/a.asp
你的服务器上就需要有个a.asp来接受并保存文件

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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