问题描述:
前几天编写一个C#程序,大致是要把一个文件上传到ftp服务器上,当代码执行到
Stream st = reqFTP.GetRequestStream();
时会抛出异常,异常的详细内容为:远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)
在解决问题时发现ftp服务器分为隔离式的和非隔离式的,所谓隔离式的就是每个User使用一个文件夹作为自己ftp服务器的目录,这个目录并不是ftp服务器设置的根目录。而非隔离式的ftp即每个用户共享一个文件夹,作为ftp的根目录。
当时我上传的路径为
ftp://192.168.1.12/123.txt
在非隔离式ftp服务器中可以正常的上传成功,而在隔离式的就不能成功了,报出上面550的错误。
具体的解决办法为:
把上传路径改为
ftp://ftpuser@192.168.1.12/123.txt
其中ftpuser为当前登录用户的用户名,192.168.1.12为ftp服务器的ip地址,123.txt为要上传的文件名
这样写就可以把文件上传到这个ftp服务器的根目录下了。经测试,在隔离式和非隔离式ftp服务器下均可使用,不会报错。
同样的道理,当你不想上传到根目录下,需要传到根目录下log文件夹下时可以这样写
ftp://ftpuser@192.168.1.12/log/123.txt
就可以了。