C# 试图将文件上载到Ftp,但出现错误:“0”;不允许使用文件名";!

C# 试图将文件上载到Ftp,但出现错误:“0”;不允许使用文件名";!,c#,upload,ftp,webclient,public-html,C#,Upload,Ftp,Webclient,Public Html,因此,我试图将一个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");

很难说,因为这是一个服务器错误,而不是代码错误。但是,正如当前编写的,您正试图上载名为
address.txt
的文件,使其成为名为
public\u html
的文件。我怀疑已经有一个同名的目录,冲突阻止了上传。试一试

upload.UploadFile("ftp://xxx.com/public_html/adress.txt", "G:/adress.txt");

相反。

这可能不适用于您,但如果它是Linux FTP服务器

这可能对Linux FTP服务器有所帮助

因此,与IIS不同,Linux FTP服务器没有公共FTP根目录。 相反,当您使用某些用户的凭据登录到FTP服务器时, 使用此用户的根目录。所以FTP目录层次结构开始了 root用户的from/root/和其他用户的from/home/username

所以,如果您需要查询一个与用户帐户主页无关的文件 目录,但相对于文件系统根,在 服务器名。生成的URL如下所示:

ftp://servername.net//var/lalala

而不是:

ftp://xxx.com/public_html
除了完整的文件名之外,您还需要在服务器名后加上第二个斜杠:

ftp://xxx.com//public_html/adress.txt
我遇到了同样的问题,它为我解决了这个问题

资料来源:

使用ftpClient而不是webclient怎么样?你是对的,我也必须选择服务器上的文件名,但是你不认为如果是这样的话,首先我们需要在服务器上创建一个具有该名称的文件吗?就像我们在windows中所做的那样。首先我们创建一个文件:“file.create()”。@Porphan-No,
UploadFile
为您处理该文件。事实上,如果您创建了文件,然后将其上载,很可能会出现错误,阻止您覆盖该文件(取决于权限等)。