3.3.5 上传文件
向FTP服务器上传文件的功能是当用户使用FTP客户端时,会经常使用到的一个功能。若想实现该功能,上传文件的命令应该是STOR或者*STOU。STOR命令会覆盖原有文件,而*STOU命令则不覆盖已经存在的文件。当上传命令发送后,用户便可以直接传送文件。例如下面的代码:
- //调用CArchive类的WriteString()函数发送STOR命令
- m_archive->WriteString("STOR " + "\r\n");
- 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()传送到服务器。在将文件上传到FTP服务器时,如果不希望覆盖原有的文件,则应该将STOR命令改为*STOU命令。因为大部分文件的结束表示都是EOF,所以当用户需要上传比较大的文件时,应该利用循环读取文件的方式进行编程(www.cppentry.com)。