4.3.4 上传文件
向FTP服务器上传文件的功能是当用户使用FTP客户端时,会经常使用到的一个功能。若想实现该功能,上传文件的命令应该是STOR或者*STOU。STOR命令会覆盖原有文件,而*STOU命令则不覆盖已经存在的文件。当上传命令发送后,用户便可以直接传送文件。代码如下:
- m_archive->WriteString("STOR "+"\r\n");
- //调用CArchive类的WriteString()函数发送STOR命令
- char buff[1024]={0}; //设置缓冲区
- SOCKET sock; //与服务器建立连接成功后返回的套接字句柄
- CFile file("list.txt",CFile::modeReadWrite);
- //关联文件并指定文件属性为可读可写
- file.Read(buff,1024); //读取文件内容到缓冲区中
- file.close(); //读取完毕,关闭文件
- ::Send(sock,buff,1024,NULL); //调用Send()函数发送文件内容到FTP文件
在代码中,用户必须先发送STOR命令到服务器,再将本地文件的内容读取到指定的缓冲区中,利用函数Send()传送到服务器。这里利用4.3.3节中与服务器连接成功后返回的套接字进行传送数据。
注意:用户上传文件到FTP服务器时,如果不希望覆盖原有的文件,则应该将STOR命令改为*STOU命令。
因为大部分文件的结束表示都是EOF,所以当用户需要上传比较大的文件时,应该利用循环读取文件的方式进行编程(www.cppentry.com)。