无法连接到FTP:(553)不允许使用文件名

Nom*_*per 12 .net c# ftp

我需要将文件FTP到目录.在.Net中,我必须使用目标文件夹上的文件来创建连接,因此我使用FTP手动将Blank.dat放在服务器上.我检查了访问权限(ls -l),它是-rw-r - r--.但是当我尝试连接到FTP文件夹时,我得到:"远程服务器返回错误:(553)文件名不允许"从服务器返回.我所做的研究表明,这可能来自权限问题,但正如我所说,我有权查看该文件,并可以从该文件夹运行ls.还有什么其他原因可能导致此问题,是否有办法连接到该文件夹​​而无需指定文件?

            byte[] buffer;
            Stream reqStream;
            FileStream stream;
            FtpWebResponse response;
            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(string.Format("ftp://{0}/{1}", SRV, DIR)));
            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.Credentials = new NetworkCredential(UID, PASS);
            request.UseBinary = true;
            request.Timeout = 60000 * 2;
            for (int fl = 0; fl < files.Length; fl++)
            {
                request.KeepAlive = (files.Length != fl);
                stream = File.OpenRead(Path.Combine(dir, files[fl]));
                reqStream = request.GetRequestStream();
                buffer = new byte[4096 * 2];
                int nRead = 0;
                while ((nRead = stream.Read(buffer, 0, buffer.Length)) != 0)
                {
                    reqStream.Write(buffer, 0, nRead);
                }
                stream.Close();
                reqStream.Close();

                response = (FtpWebResponse)request.GetResponse();
                response.Close();
            }
Run Code Online (Sandbox Code Playgroud)

use*_*926 30

虽然回复一篇旧帖只是认为它可能对某人有所帮助.

创建ftp URL时,请确保未包含该登录的默认目录.

例如,这是我指定的路径,我得到异常553 FileName不允许异常

ftp://myftpip/gold/central_p2/inbound/article_list/jobs/abc.txt
Run Code Online (Sandbox Code Playgroud)

我使用的登录有默认目录gold/central_p2.so提供的url变得无效,因为它试图找到默认目录中的整个路径.我相应地修改了我的url字符串,并且能够摆脱异常.

我修改过的网址看起来像

ftp://myftpip/inbound/article_list/jobs/abc.txt
Run Code Online (Sandbox Code Playgroud)

谢谢,

SAB

  • 哇靠!我想送你送花! (4认同)
  • 只是添加一些东西:如果你仍然想要使用绝对路径(我更喜欢这个,因为有时我使用不同的用户登录并且相对路径不起作用),你可以在主机之后放两个"//".像ftp://myftpip//gold/central_p2/inbound/article_list/jobs/abc.txt (4认同)

小智 7

这可能有助于Linux FTP服务器.

因此,与IIS不同的Linux FTP服务器没有通用的FTP根目录.相反,当您使用某些用户的凭据登录到FTP服务器时,将使用此用户的根目录.因此,FTP目录层次结构从/ root /为root用户启动,从/ home/username为其他用户启动.

因此,如果您需要查询与用户帐户主目录无关的文件,但相对于文件系统根目录,请添加额外/后服务器名称.生成的URL将如下所示:

ftp://servername.net//var/lalala
Run Code Online (Sandbox Code Playgroud)


Fen*_*Fen 1

我不久前看到过类似的情况,事实证明我正在尝试连接到使用 Active Directory 保护的内部 iis ftp 服务器。

在我的网络凭据中,我使用 new NetworkCredential(@"domain\user", "password"); 但那是失败的。切换到 new NetworkCredential("user", "password", "domain"); 为我工作。