3.3.5 上传文件

2013-10-07 15:55:23 · 作者: · 浏览: 74

3.3.5  上传文件

向FTP服务器上传文件的功能是当用户使用FTP客户端时,会经常使用到的一个功能。若想实现该功能,上传文件的命令应该是STOR或者*STOU。STOR命令会覆盖原有文件,而*STOU命令则不覆盖已经存在的文件。当上传命令发送后,用户便可以直接传送文件。例如下面的代码:

  1. //调用CArchive类的WriteString()函数发送STOR命令  
  2. m_archive->WriteString("STOR " + "\r\n");     
  3. char buff[1024] = {0};              //设置缓冲区  
  4. SOCKET sock;                        //与服务器建立连接成功后返回的套接字句柄  
  5. CFile file("list.txt", CFile::modeReadWrite); //关联文件并指定文件属性为可读可写  
  6. file.Read(buff, 1024);                  //读取文件内容到缓冲区中  
  7. file.close();                           //读取完毕,关闭文件  
  8. ::Send(sock, buff, 1024, NULL); //调用Send()函数发送文件内容到FTP文件   

在上述代码中,用户必须先发送STOR命令到服务器,再将本地文件的内容读取到指定的缓冲区中,利用函数Send()传送到服务器。在将文件上传到FTP服务器时,如果不希望覆盖原有的文件,则应该将STOR命令改为*STOU命令。因为大部分文件的结束表示都是EOF,所以当用户需要上传比较大的文件时,应该利用循环读取文件的方式进行编程(www.cppentry.com)。