只需要将上传文件路径传给组件就行了-一个接口,当然,如果你希望存入数据库,也可以再将SQL语句传入!

解决方案 »

  1.   

    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);
                }
      

  2.   

    或者
     csocketfile file(&sockrecv); //构造一文件对象
    carchive arin
    (&file,carchive::load);
    carchive arout
    (&file,carchive::store);//构造流对象
    arin〉〉dwvalue;
    arout〈〈dwvalue;//用流进行数据的传输
      

  3.   

    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(...)
      

  4.   

    linghushaonian(玉)
    可能我没说明白,我的问题不是这个意思
    我看你的程序是建立连接,从 socket 读数据。
    而我想要做一个在 asp 里调用的控件,来实现网页里文件上传功能。
    这个控件的任务是提供一些方法给 asp 调用,这些方法有的用来读取数据,有的用来保存成文件。类似的软件有很多,象有名的 aspupload ,但不符合我们的要求,我想自己写一个
    不知道如何下手
      

  5.   

    控件?只要将以上的实现功能封装,提供接口给asp调用就行了阿
      

  6.   

    在 ATL 中选择 Active Server Comp... 的组件. 在 OnStartPage(IUnknown* pUnk)  中可以通过 QI 获得 IScriptingContext 接口, 通过 IScriptingContext 就可以获得 IResponse , IRequest 等 ASP 对象。
        其实最简单的是你在 创建组件的时候,在 Wizard / ASP 栏上选上你需要的 ASP 对象。然后你的程序中你可以使用 m_piRequest , m_piResponse 等操作ASP对象了。
        如果你写过 ASP 的话,应该就知道剩下的该怎么做了。
      

  7.   

    如果数据是你自己组织的并且是用 HttpSendRequestEx 将文件数据用 POST 传到服务器的话,一般你就用 Request.BinaryRead 就可以获得你上传的文件了,前不久我才做个一个,很简单的。
      

  8.   

    LLnju我的情况和你说的差不多,我试一下,先谢过
    一并谢linghushaonian(玉)
      

  9.   

    LLnju(LLnju)我试了一下,没搞定,我把情况描述一下,然后有几个问题需要需要您帮忙。我们一个 asp 的网站,里面有些地方需要文件上传功能。
    在一个普通的网页里,选定一个文件,然后点“上传”按钮。
    服务器端,asp 调用这个组件,传入一个文件名,然后组件读取文件数据,并根据指定的文件名保存。这个过程您可能很清楚,我的问题是以下几点:
    1、asp 传入的文件名参数类型是什么? VARIANT 还是 BSTR 还是别的。
    2、Request 接口的 BinaryRead 需要两个 VARIANT * 的参数,第二个参数保存有读取到的内容,我对 VARIANT 很陌生,不知道该怎么取他的值得出来。我这任务压的比较急,可以给我个更方便的联系方式吗?
    我的 mail 是 :[email protected]
         q    是 :6038363
      

  10.   

    http://263.csdn.net/filebbs/files/2001_4/T_8_1.rar说明看:
    http://www.csdn.net/expert/topic/108/108493.xml
    http://www.csdn.net/filebbs/read_topic.asp?id=8以前我照着别人的一个范列写的。