我有一个恼人的问题,阻止我在FTP中获取所需的文件。这个文件可能有不同的名称,所以我需要先访问文件夹,并列出其中的文件,然后直接请求该文件。
我的问题是,我可以访问这个文件在Filezilla中,例如,并完美地发现文件夹,但当使用FtpWebSolutions
实例来获取文件夹,我有一个错误550
550文件不可用(例如,找不到文件,无法访问)
代码如下:
FtpWebRequest wr = (FtpWebRequest)WebRequest.Create("ftp://ftp.dachser.com/data/edi/kunden/da46168958/out");
wr.Method = WebRequestMethods.Ftp.ListDirectoryDetails;
wr.Credentials = new NetworkCredential("login", "password");
FtpWebResponse response = (FtpWebResponse)wr.GetResponse();
Stream reponseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(reponseStream);
string names = reader.ReadToEnd();
FtpWebResponse响应=(FtpWebResponse)wr。GetResponse();
线路是否抛出错误
PS:生产、测试和FileZilla位于同一个域中,使用相同的internet连接(如果有帮助)
感谢您的关注和反馈
FileZilla日志:
从我的程序记录,红色圆圈的错误与FTP错误无关
在2021年
这适用于我们的Linux和Windowslive
框从ftp服务器读取(在Windows和Linux)
笔记
TL;博士
它的工作原理是:
ftp://ftp.yourdomain.com.br/public_html/
ftp://ftp.yourdomain.com.br//public_html/
ftp://ftp.yourdomain.com.br/web/
ftp://ftp.yourdomain.com.br//web/
它不工作:
ftp://ftp.yourdomain.com.br/public_html
ftp://ftp.yourdomain.com.br//public_html
ftp://ftp.yourdomain.com.br/web
ftp://ftp.yourdomain.com.br//web
用法://验证目录public_html是否存在
var url = "/public_html/";
var result = FtpUtil.DoesDirectoryExists(url, "ftp://ftp.yourdomain.com.br", "ftp user here", "ftp password here");
static bool DoesDirectoryExists(string directory, string ftpHost, string ftpUser, string ftpPassword) {
FtpWebRequest ftpRequest = null;
try {
ftpRequest = (FtpWebRequest)WebRequest.Create(new Uri("ftp://" + ftpHost + directory));
ftpRequest.Credentials = new NetworkCredential(ftpUser, string ftpPassword);
ftpRequest.UseBinary = true;// optional
ftpRequest.KeepAlive = false;// optional
ftpRequest.UsePassive = true;// optional
ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory;
using (FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse()) {
return true;//directory found
}
}
catch (WebException ex) {
if (ex.Response != null) {
FtpWebResponse response = (FtpWebResponse)ex.Response;
if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
return false;// directory not found.
}
return false; // directory not found.
}
finally {
ftpRequest = null;
}
}
当<代码> FtpWebRequest <代码>解释URL时,它不考虑将主机名和路径分隔为路径的一部分的斜杠。然后,提取的路径按原样与FTPCWD
命令一起使用。这意味着FTP服务器将解析相对于主目录的路径。如果您的帐户没有chrooted(客户端不将home视为root),则缺少前导斜杠会导致意外行为。
在本例中,您从/remote/path
开始,并使用类似ftp://example.com/remote/path/
,它将尝试更改为remote/path
,因此最终将更改为/remote/path/remote/path
。那不是你想要的。
ftp://example.com//remote/path/
还要注意,文件夹的URL应该以斜杠结尾:为什么FtpWebRequest会为这个现有目录返回一个空流?
对于其他550问题,请参阅FtpWebRequest返回错误550文件不可用
我创建了一个小的windows窗体应用程序,将文件上载到我们客户的ftp站点之一。但我遇到的问题是,当我在本地机器上运行这个应用程序时,它会成功上传文件。但是如果我在我们的服务器上运行这个程序,我会收到这个错误消息; 远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问文件),在此行“objFTPRequest.GetRequestStream();”。 有人知道为什么吗?我需要配
我有这个方法来获取Java程序运行的目录。 但是,当我创建一个新的实例并将此目录作为其父目录时,它会在驱动器的根目录中返回一个。 我期望这个文件的绝对路径是,但它的。
喂, 我尝试使用doxygen从一组文件夹生成代码文档。我的文件夹结构是这样的: 然后在配置文件中我在“default”配置文件中有以下设置(在这里的文档和其他问题中有说明): 我正在Linux Ubuntu(12.04LTS)上使用Doxygen1.8.4。 提前感谢您的提示和提示。
在使用ProcessBuilder的目录()方法时,我试图在Java中运行一个子进程。但是,每当我使用目录()方法时,程序都会失败,说找不到文件。但是,该文件存在于工作目录中。 输出: 当我省略了catudory()方法并创建一个ProcessBuilder,例如:,它可以正常工作,firefox.exe成功启动。 这在Windows和Linux上都会发生。 我已经尝试了几个版本的启动命令(比如<
问题内容: 当我尝试在IntelliJ中创建项目时,在此行上收到以下错误: 错误: 是实现 接口* 的类 * 所有软件包都存在,我可以跳转到每个接口或类的声明,但是我不知道为什么IntellJ说它无法访问或找到它们?但是是接口而不是类 上面的声明位于一个名为jar的jar文件中,并且存在于Project图书馆员中。 问题答案: 该项目包含几个模块。在将库添加到项目库后,某些模块在其依赖项中缺少它。
我正在使用antlr4 maven插件构建使用antlr4的maven项目: 我从一个语法文件开始,得到了我的pom。xml设置,一切都很好。 然后,我决定将语法拆分为逻辑部分,因此使用了几个语法文件,但它们位于不同的目录中(因此生成的代码将放在单独的包中),但仍然位于同一根src/main/antlr4目录下。 我在“顶层”语法文件中使用import语句来导入其他必需的文件。 但是现在maven