关于设计 asp 上传组件的问题 只需要将上传文件路径传给组件就行了-一个接口,当然,如果你希望存入数据库,也可以再将SQL语句传入! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CLoginWnd logwnd; logwnd.m_csServerName = strServerName; HINTERNET hInternet=NULL; if(hInternet = ::InternetOpen("", INTERNET_OPEN_TYPE_PRECONFIG, NULL,NULL,NULL)) { HINTERNET hInnetConnect = NULL; while(!(hInnetConnect = InternetConnect( hInternet,strServerName, nPort,logwnd.m_csUser,logwnd.m_csPWD, INTERNET_SERVICE_HTTP, NULL,0))) { if(logwnd.DoModal()!=IDOK) { break; } } if(hInnetConnect) { LPCTSTR Accept = "*/*"; HINTERNET hRequest = NULL; if(hRequest = HttpOpenRequest(hInnetConnect, "GET",strObject,NULL,NULL,&Accept, INTERNET_FLAG_EXISTING_CONNECT and INTERNET_FLAG_NO_AUTO_REDIRECT, 0)) { if(::HttpSendRequest(hRequest,szHeaders,strlen(szHeaders),NULL,0)) { DWORD dwSizeInput=0; DWORD dwSizeBuffer=0; DWORD dwSizeReaded=0; InternetQueryDataAvailable(hRequest,&dwSizeBuffer,0,0); while(dwSizeBuffer) { dwSizeInput+=dwSizeBuffer; if(pRetByte==NULL) { pRetByte = (BYTE*)malloc(dwSizeInput+1); } else { pRetByte = (BYTE*)realloc(pRetByte,dwSizeInput+1); } InternetReadFile(hRequest, pRetByte+dwSizeInput-dwSizeBuffer, dwSizeBuffer,&dwSizeReaded); InternetQueryDataAvailable(hRequest,&dwSizeBuffer,0,0); } dwDataSize = dwSizeInput; } InternetCloseHandle(hRequest); } InternetCloseHandle(hInnetConnect); } InternetCloseHandle(hInternet); } 或者 csocketfile file(&sockrecv); //构造一文件对象carchive arin(&file,carchive::load);carchive arout(&file,carchive::store);//构造流对象arin〉〉dwvalue;arout〈〈dwvalue;//用流进行数据的传输 FTP程序 :1、生成CInternetSession变量。CInternetSession ses;2、打开FTP连接。CFtpConnection* pFTP=ses.GetFtpConnection("ftp.microsoft.com","user","password",port,FALSE);3、打开文件。CInternetFile* pF=pFTP->OpenFile("abc.exe");更简单的是使用CFtpConnect::GetFile(...) ; CFtpConnection::PutFile(...) ;可以拷贝文件。4、读取文件,由于CInternetFile是CStdFile的派生类,因此可以使用CFile,CStdFile的所有函数。pF->Read(...) linghushaonian(玉)可能我没说明白,我的问题不是这个意思我看你的程序是建立连接,从 socket 读数据。而我想要做一个在 asp 里调用的控件,来实现网页里文件上传功能。这个控件的任务是提供一些方法给 asp 调用,这些方法有的用来读取数据,有的用来保存成文件。类似的软件有很多,象有名的 aspupload ,但不符合我们的要求,我想自己写一个不知道如何下手 控件?只要将以上的实现功能封装,提供接口给asp调用就行了阿 在 ATL 中选择 Active Server Comp... 的组件. 在 OnStartPage(IUnknown* pUnk) 中可以通过 QI 获得 IScriptingContext 接口, 通过 IScriptingContext 就可以获得 IResponse , IRequest 等 ASP 对象。 其实最简单的是你在 创建组件的时候,在 Wizard / ASP 栏上选上你需要的 ASP 对象。然后你的程序中你可以使用 m_piRequest , m_piResponse 等操作ASP对象了。 如果你写过 ASP 的话,应该就知道剩下的该怎么做了。 如果数据是你自己组织的并且是用 HttpSendRequestEx 将文件数据用 POST 传到服务器的话,一般你就用 Request.BinaryRead 就可以获得你上传的文件了,前不久我才做个一个,很简单的。 LLnju我的情况和你说的差不多,我试一下,先谢过一并谢linghushaonian(玉) LLnju(LLnju)我试了一下,没搞定,我把情况描述一下,然后有几个问题需要需要您帮忙。我们一个 asp 的网站,里面有些地方需要文件上传功能。在一个普通的网页里,选定一个文件,然后点“上传”按钮。服务器端,asp 调用这个组件,传入一个文件名,然后组件读取文件数据,并根据指定的文件名保存。这个过程您可能很清楚,我的问题是以下几点:1、asp 传入的文件名参数类型是什么? VARIANT 还是 BSTR 还是别的。2、Request 接口的 BinaryRead 需要两个 VARIANT * 的参数,第二个参数保存有读取到的内容,我对 VARIANT 很陌生,不知道该怎么取他的值得出来。我这任务压的比较急,可以给我个更方便的联系方式吗?我的 mail 是 :[email protected] q 是 :6038363 http://263.csdn.net/filebbs/files/2001_4/T_8_1.rar说明看:http://www.csdn.net/expert/topic/108/108493.xmlhttp://www.csdn.net/filebbs/read_topic.asp?id=8以前我照着别人的一个范列写的。 ERROR C2660 GetClientRect(&rect)得到的是哪个区域的坐标? 如何比较两个文件的内容是否相同 VC++中 如何把字节型转换为字型 BHO problem. 哪儿有DriverStudio2.6 下载 各位高手们,COM组件与ActiveX控件它们有何区别,它们的通用性方面有什么解释?详细点! 询问当递归调用的层次很深时,有什么办法可以避免 stack overflow? 简单问题,要分的快来 彩票模拟器 请问打印CFormView类视图的基本思路是什么? 如何异步调用httpopenrequest和httpsendrequest,急急
logwnd.m_csServerName = strServerName;
HINTERNET hInternet=NULL;
if(hInternet = ::InternetOpen("",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,NULL,NULL))
{
HINTERNET hInnetConnect = NULL;
while(!(hInnetConnect = InternetConnect(
hInternet,strServerName,
nPort,logwnd.m_csUser,logwnd.m_csPWD,
INTERNET_SERVICE_HTTP,
NULL,0)))
{
if(logwnd.DoModal()!=IDOK)
{
break;
}
}
if(hInnetConnect)
{
LPCTSTR Accept = "*/*";
HINTERNET hRequest = NULL;
if(hRequest = HttpOpenRequest(hInnetConnect,
"GET",strObject,NULL,NULL,&Accept,
INTERNET_FLAG_EXISTING_CONNECT and INTERNET_FLAG_NO_AUTO_REDIRECT,
0))
{
if(::HttpSendRequest(hRequest,szHeaders,strlen(szHeaders),NULL,0))
{
DWORD dwSizeInput=0;
DWORD dwSizeBuffer=0;
DWORD dwSizeReaded=0;
InternetQueryDataAvailable(hRequest,&dwSizeBuffer,0,0);
while(dwSizeBuffer)
{
dwSizeInput+=dwSizeBuffer;
if(pRetByte==NULL)
{
pRetByte = (BYTE*)malloc(dwSizeInput+1);
}
else
{
pRetByte = (BYTE*)realloc(pRetByte,dwSizeInput+1);
}
InternetReadFile(hRequest,
pRetByte+dwSizeInput-dwSizeBuffer,
dwSizeBuffer,&dwSizeReaded);
InternetQueryDataAvailable(hRequest,&dwSizeBuffer,0,0);
}
dwDataSize = dwSizeInput;
}
InternetCloseHandle(hRequest);
}
InternetCloseHandle(hInnetConnect);
}
InternetCloseHandle(hInternet);
}
csocketfile file(&sockrecv); //构造一文件对象
carchive arin
(&file,carchive::load);
carchive arout
(&file,carchive::store);//构造流对象
arin〉〉dwvalue;
arout〈〈dwvalue;//用流进行数据的传输
1、生成CInternetSession变量。CInternetSession ses;2、打开FTP连接。CFtpConnection* pFTP=ses.GetFtpConnection("ftp.microsoft.com","user","password",port,FALSE);3、打开文件。CInternetFile* pF=pFTP->OpenFile("abc.exe");更简单的是使用CFtpConnect::GetFile(...) ; CFtpConnection::PutFile(...) ;可以拷贝文件。4、读取文件,由于CInternetFile是CStdFile的派生类,因此可以使用CFile,CStdFile的所有函数。pF->Read(...)
可能我没说明白,我的问题不是这个意思
我看你的程序是建立连接,从 socket 读数据。
而我想要做一个在 asp 里调用的控件,来实现网页里文件上传功能。
这个控件的任务是提供一些方法给 asp 调用,这些方法有的用来读取数据,有的用来保存成文件。类似的软件有很多,象有名的 aspupload ,但不符合我们的要求,我想自己写一个
不知道如何下手
其实最简单的是你在 创建组件的时候,在 Wizard / ASP 栏上选上你需要的 ASP 对象。然后你的程序中你可以使用 m_piRequest , m_piResponse 等操作ASP对象了。
如果你写过 ASP 的话,应该就知道剩下的该怎么做了。
一并谢linghushaonian(玉)
在一个普通的网页里,选定一个文件,然后点“上传”按钮。
服务器端,asp 调用这个组件,传入一个文件名,然后组件读取文件数据,并根据指定的文件名保存。这个过程您可能很清楚,我的问题是以下几点:
1、asp 传入的文件名参数类型是什么? VARIANT 还是 BSTR 还是别的。
2、Request 接口的 BinaryRead 需要两个 VARIANT * 的参数,第二个参数保存有读取到的内容,我对 VARIANT 很陌生,不知道该怎么取他的值得出来。我这任务压的比较急,可以给我个更方便的联系方式吗?
我的 mail 是 :[email protected]
q 是 :6038363
http://www.csdn.net/expert/topic/108/108493.xml
http://www.csdn.net/filebbs/read_topic.asp?id=8以前我照着别人的一个范列写的。