我需要将文件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
小智 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)
我不久前看到过类似的情况,事实证明我正在尝试连接到使用 Active Directory 保护的内部 iis ftp 服务器。
在我的网络凭据中,我使用 new NetworkCredential(@"domain\user", "password"); 但那是失败的。切换到 new NetworkCredential("user", "password", "domain"); 为我工作。
| 归档时间: |
|
| 查看次数: |
33653 次 |
| 最近记录: |