最近遇到一个需求,就是两天服务要互相传递附件,但一个服务器微软server2008r2,另一个是国产麒麟系统(这里我用的ubuntu模仿,应该大同小异):
1.首先安装vsftpd软件,在terminal下输入:$ sudo apt-get install vsftpd 回车直接安装,一般安装好后vsftpd是自动运行的,下边是操作
sudo service vsftpd start #开始
sudo service vsftpd stop #关闭
sudo service vsftpd restart #重启
2.配置vsftpd,
sudo nano /etc/vsftpd.conf 打开文件
#禁止匿名访问
anonymous_enable=NO
#接受本地用户
local_enable=YES
#允许上传
write_enable=YES
#用户只能访问限制的目录
chroot_local_user=YES (后来经过测试这个配置最好不要加)
#设置固定目录,在结尾添加。如果不添加这一行,各用户对应自己的目录,当然这个文件夹自己建
local_root=/home/ftp
如上把相关行配置好,最后一行也可以不用加
3.访问代码
其他的我就不写,建立用户啥的我都没有用,只看核心:
// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://192.168.217.128/Documents/test111.txt");
request.Method = WebRequestMethods.Ftp.UploadFile;
// This example assumes the FTP site uses anonymous logon.
request.Credentials = new NetworkCredential("handong", "1");
// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader("D:/testfile.txt");
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
这样做直接把d潘霞的testfile.txt文件上传到服务器上documents文件夹下并且重命名为test111.txt