【问题标题】:trying to upload a file to Ftp but getting the error: "file name not allowed"!试图将文件上传到 Ftp 但收到错误:“文件名不允许”!
【发布时间】:2013-06-08 15:08:24
【问题描述】:

所以我试图将一个 1kb 的文本文件上传到我的 ftp 服务器,但出现了这个错误:

远程服务器返回错误:(553) 文件名不允许。

那么我的代码有什么问题?

WebClient upload = new WebClient();
upload.Credentials = new NetworkCredential("******", "*********");
upload.UploadFile("ftp://xxx.com/public_html", "G:/adress.txt");

【问题讨论】:

标签: c# upload ftp webclient public-html


【解决方案1】:

很难说,因为这是服务器错误而不是代码错误。但是,正如当前所写,您正在尝试将名为adress.txt 的文件上传为名为@9​​87654322@ 的文件。我怀疑已经有一个具有该名称的目录,并且冲突阻止了上传。试试看

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

改为。

【讨论】:

  • 你说得对,我也必须在服务器上选择文件名,但你不认为如果是这样的话,首先我们需要在服务器上创建一个具有该名称的文件吗?就像我们在 Windows 中所做的那样。首先我们创建一个文件:'File.Create()'。
  • @Porphan - 不,UploadFile 为您处理。事实上,如果您创建文件,然后上传它,您很可能会收到一个错误,阻止您覆盖文件(取决于权限等)。
【解决方案2】:

这可能不适用于您,但如果它是 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

我遇到了同样的问题,它为我解决了这个问题。

来源: Can't connect to FTP: (553) File name not allowed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 2012-03-14
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多