Tag: ftpwebrequest

为什么FTPWebRequest或WebRequest一般都不接受/../路径?

我试图从ftp Web服务器自动执行一些上传/下载任务。 当我通过客户端或通过Firefox连接到服务器时,为了进入我的目录,我必须指定这样的路径: ftp://ftpserver.com/../AB00000/incoming/files 如果我尝试访问此内容: ftp://ftpserver.com/AB00000/incoming/files 服务器抛出该目录不存在的错误。 那么,问题是: 我试图用第一个ftp地址创建一个FTPWebRequest,但它总是解析出“/../”部分然后我的服务器说该路径不存在。 我试过这些: Uri target = new Uri(“ftp://ftpserver.com/../AB00000/incoming/files”); FtpWebRequest request = (FtpWebRequest)WebReqeuest.Create(target); 和 string target = “ftp://ftpserver.com/../AB00000/incoming/files”; FtpWebRequest request = (FtpWebRequest)WebRequest.Create(target); 在第一位,当实例化Uri对象时,路径已经不正确,在第二位,它在WebRequest.Create方法之后。 有什么想法正在发生什么? 编辑: 另外,由于我发布了这个,我尝试使用no parse选项创建URI。 我也尝试过这样的事情: string ftpserver = “ftp://ftpserver.com/../”; string path = “12345/01/01/file.toupload”; Uri = new Uri(ftpserver, path, true); 它总是解析根部分(“/../”)。

在FtpWebRequest中设置端口

我需要用户能够修改端口以下载FTP信息 – 但我找不到在FtpWebRequest中更改此方法的方法。

FtpWebResponse,操作超时

我想根据他们的日期时间从ftp服务器下载文件..我可以从CuteFtp第三方访问这个Ftp,而且每件事都是Okey ..但是当我在GetRespone()行运行下面的代码时,我收到此错误:操作已经超时。 我用webclient requet以编程方式从这个FTP下载了一个示例文件,它很好..但是我需要使用FtpWebRequest来获取listDirectoryDe​​tail而webClient不支持那个……还有一件事,请求中有一个exception: FtpWebRequest.ContentType抛出了System.NotSupportedException类型的exception。 这是我的代码: Uri uri = new Uri(“ftp://192.168.1.5:2100/”);//the private address if (uri.Scheme != Uri.UriSchemeFtp) { return; } FtpWebRequest reqFTP; reqFTP = (FtpWebRequest)WebRequest.Create(uri); reqFTP.Credentials = new NetworkCredential(“myuser”, “mypass”); reqFTP.KeepAlive = false; reqFTP.Method = WebRequestMethods.Ftp.ListDirectoryDetails; reqFTP.UseBinary = true; reqFTP.Proxy = null; reqFTP.UsePassive = false; FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse(); 请帮忙 :(

检查FTP服务器上是否存在目录

我正在检查我的FTP服务器上是否存在目录: public bool DirectoryExists(string directory) { bool directoryExists; var request = (FtpWebRequest)WebRequest.Create(directory); request.Method = WebRequestMethods.Ftp.ListDirectory; request.Credentials = new NetworkCredential(“user”, “pass”); try { using (request.GetResponse()) { directoryExists = true; } } catch (WebException) { directoryExists = false; } return directoryExists; } 在这种情况下: directory = @”ftp://ftp.example.com/Rubicon”; 在我的服务器上,我有一个名为Rubicon1的文件夹。 这导致我的检查返回true 。 除非它与目录名称完全匹配,否则如何确保它失败?

如何使用C#从FTP下载大量文件?

我需要按计划的时间间隔运行一个控制台应用程序,只需从FTP站点下载.pgp文件。 必须下载FTP中的任何pgp文件。 我找到了示例代码来获取FTP的目录列表,并在此处写了: FtpWebRequest req = (FtpWebRequest)WebRequest.Create(“ftp://ourftpserver”); req.Method = WebRequestMethods.Ftp.ListDirectoryDetails; req.Credentials = new NetworkCredential(“user”, “pass”); FtpWebResponse response = (FtpWebResponse)req.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream); Console.WriteLine(reader.ReadToEnd()); Console.WriteLine(“Directory List Complete, status {0}”, response.StatusDescription); reader.Close(); response.Close(); 我该怎么做才能从目录列表中下载.pgp类型的所有文件并将它们保存在我们服务器上的本地目录中?

从WebRequestMethods.Ftp.ListDirectoryDe​​tails中提取文件名

我有一个应用程序执行以下操作:目录列表,下载文件,全部下载。 从WebRequestMethods.Ftp.ListDirectoryDe​​tails获取文件名时遇到问题。 对于每种情况,似乎都不可能这样做。 WebRequestMethods.Ftp.ListDirectoryDe​​tails以下列方式返回lineItem: “-rw-r – r– 1 ftp ftp 39979 Aug 01 16:02 db to pc 2014-08-05 07-30-00.csv” 我正在使用第一个字符来确定它是文件还是目录。 然后我在空间上拆分文件,并在拆分中的固定索引量之后获取文件名。 我的实现中的问题是,如果一个文件有多个空格,那么它将被错误地引用,空格较少,并且在尝试下载时不会找到该文件。 我无法使用split.last(),因为文件名可以包含空格,也不能包含WebRequestMethods.Ftp.ListDirectory,因为它不允许我们区分目录和没有扩展名的文件。 也不是正则表达式,因为文件名可以包含日期。 寻找完全涵盖所有案例的解决方案的任何帮助都会很棒。 bool isDirectory = line.Substring(0,1).Equals(“d”, System.StringComparison.OrdinalIgnoreCase); string[] itemNames = line.Split(new[] { ‘ ‘, ‘\t’ }, StringSplitOptions.RemoveEmptyEntries).Select((value, index) => new { value, index }).Where(i => i.index > 7).Select(i => i.value).ToArray(); string val […]

使用FtpWebRequest重命名文件

将文件移动到另一个FTP位置时,必须将RenameTo与新的FTP位置一起使用。 在此示例中,如何使用RenameTo移动到新的FTP位置? FtpWebRequest ftpRequest = null; FtpWebResponse ftpResponse = null; try { ftpRequest = (FtpWebRequest)WebRequest.Create(“ftp://mysite.com/folder1/fileName.ext”); ftpRequest.Credentials = new NetworkCredential(“user”, “pass”); ftpRequest.UseBinary = true; ftpRequest.UsePassive = true; ftpRequest.KeepAlive = true; ftpRequest.Method = WebRequestMethods.Ftp.Rename; ftpRequest.RenameTo = “ftp://mysite.com/folder2/fileName.ext”; ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); ftpResponse.Close(); ftpRequest = null; } catch (Exception ex) { Label1.Text = (ex.ToString()); }

从FTP服务器下载多个文件

我在ftp服务器上有多个文件。我不知道这些文件的名称,除了它们都是。 xml文件。 如何使用.Net的FtpWebRequest以编程方式下载这些文件? 谢谢。

FtpWebRequest连接到AS / 400

我需要从旧的AS / 400服务器通过ftp下载一些文件。 我的代码看起来或多或少像: FtpWebRequest _request = (FtpWebRequest)WebRequest.Create(“ftp://ftpaddress/FOO.CSV”); _request.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword); _request.Method = WebRequestMethods.Ftp.DownloadFile; FtpWebResponse response = (FtpWebResponse)_request.GetResponse(); 但是,消息抛出exception: 501 Character (/) not allowed in object name. 我猜测AS400使用的路径分隔符不同于/但我无法弄清楚如何用某种方式表达uri(1)FtpWebRequest接受和(2)AS400理解。 其他人碰到了这个?

FtpWebRequest下载文件不正确的大小

我正在使用以下代码从远程ftp服务器下载文件: FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverPath); request.KeepAlive = true; request.UsePassive = true; request.UseBinary = true; request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(userName, password); using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) using (Stream responseStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(responseStream)) using (StreamWriter destination = new StreamWriter(destinationFile)) { destination.Write(reader.ReadToEnd()); destination.Flush(); } 我正在下载的文件是一个DLL,我的问题是它以某种方式被这个过程改变了。 我知道这是因为文件大小正在增加。 我怀疑这部分代码有错: destination.Write(reader.ReadToEnd()); destination.Flush(); 任何人都可以提出任何可能出错的想法吗?