所以我试图将一个 1kb 的文本文件上传到我的 ftp 服务器,但是出现了这个错误:
远程服务器返回错误:(553) 文件名不允许。
那么我的代码有什么问题?
WebClient upload = new WebClient();
upload.Credentials = new NetworkCredential("******", "*********");
upload.UploadFile("ftp://xxx.com/public_html", "G:/adress.txt");
所以我试图将一个 1kb 的文本文件上传到我的 ftp 服务器,但是出现了这个错误:
远程服务器返回错误:(553) 文件名不允许。
那么我的代码有什么问题?
WebClient upload = new WebClient();
upload.Credentials = new NetworkCredential("******", "*********");
upload.UploadFile("ftp://xxx.com/public_html", "G:/adress.txt");
很难说,因为这是服务器错误而不是代码错误。但是,正如当前所写,您正在尝试上传名为的文件adress.txt以成为名为public_html. 我怀疑已经有一个具有该名称的目录,并且冲突阻止了上传。尝试
upload.UploadFile("ftp://xxx.com/public_html/adress.txt", "G:/adress.txt");
反而。
这可能不适用于您,但如果它是Linux FTP 服务器:
这可能对 Linux FTP 服务器有所帮助。
因此,与 IIS 不同的 Linux FTP 服务器没有通用的 FTP 根目录。相反,当您使用某些用户的凭据登录 FTP 服务器时,会使用该用户的根目录。因此 FTP 目录层次结构从 /root/ 开始,用于 root 用户,从 /home/username 开始用于其他用户。
因此,如果您需要查询的文件不是相对于用户帐户主目录,而是相对于文件系统根目录,请在服务器名称后添加一个额外的 /。生成的 URL 将如下所示:
ftp://servername.net//var/lalala
代替:
ftp://xxx.com/public_html
除了完整的文件名之外,您还需要在服务器名称后添加第二个斜杠:
ftp://xxx.com//public_html/adress.txt
我遇到了同样的问题,它为我解决了这个问题。