Tag: ftpwebrequest

在C#中FTP多个文件而不重新建立连接

FTP协议旨在支持控制通道,并使用该控制通道告诉服务器打开TCP连接和传输文件。 发送或接收文件的服务器不必与FTP控制通道所连接的服务器相同。 它可以是“三角形”类型的连接。 它还允许客户端在控制通道上登录一次,并反复告诉服务器传输文件,而无需重新登录控制通道。 显然,这个概念在创建C# FtpWebRequest类时完全逃脱了MS。 我需要完全按照FTP协议的设计来做: 连接到服务器 传递凭据 创建目录(并愉快地忽略’已存在’错误) 反复将文件传输到服务器 退出控制通道 我确定在FtpWebRequest类中没有看到这种能力。 或任何看似允许C#代码中的那种流的东西。 我看了看: 在https://social.msdn.microsoft.com/Forums/vstudio/en-US/9e14bc29-25bf-45ec-9303-1d8ffda2064d/c-ftp-send-multiple-files-log-in-only-once?forum = csharpgeneral 并在c#中将多个文件上传到FTP 和别的。 但是,这似乎都不允许控制方式。 我可以指定KeepAlive属性,但循环必须重复调用WebRequest.Create(targetName); function,它将创建一个新连接,并获得一个新的响应。 然后它们会超出范围或成为孤儿,因此根据定义,它们会被销毁。 因此必须关闭连接,然后必须重新打开。 对于数据连接,没关系,但操作CONTROL端口的能力在哪里? 该类不允许用户区分CONTROL端口和DATA端口,如FTP规范所定义。 有没有办法使用C#类以它的方式进行FTP? 因为在微软狭隘的思维模式中,整个世界看起来像是一个HTTP Get / Response协议。 任何建议表示赞赏。 -Scotty

C# – 通过HTTP代理将文件上传到FTP

我正在尝试编写一个C#程序,将文件上传到通过代理服务器的FTP。 这是我写的代码: public new bool Upload(string localFilePath, string pathUpload) { Stream FStream = null; bool retval = false; FileStream FlStream; try { FtpWebRequest FtpRequest = (FtpWebRequest) FtpWebRequest.Create(Uri + pathUpload); FtpRequest.Credentials = new NetworkCredential(User, Password); if (ProxyAddress != “” && ProxyAddress != null) { WebProxy ftpProxy = new WebProxy(); ftpProxy.Address = new System.Uri(ProxyAddress); ftpProxy.Credentials = new […]

是否可以通过FTP代理使用C#FtpWebRequest?

据我了解, FtpWebRequest.Proxy属性表示HTTP代理。 我必须通过FTP代理向外部服务器发出FTP请求。 到目前为止,我唯一能让它工作的方法是创建一个使用Windows FTP命令并以此方式下载的脚本。 是否可以使用FtpWebRequest通过FTP代理下载文件?

将C#用于FTP文件到大型机,包括数据集 – 将FTP脚本转换为FtpWebRequest代码

我使用cmd(Windows)将文件发送到IBM Mainframe并且工作正常它是这样的: Open abc.wyx.state.aa.bb User Pass lcd c:\Transfer> Put examplefile ‘ABCD.AA.C58FC.ABC1FD.ZP3ABC’ close bye 我需要将其转换为C#。 我一直在尝试使用FtpWebRequest但没有运气。 我想不出如何包含数据集。 当我运行应用程序时,我收到以下错误: ((System.Exception)(ex))。消息“远程服务器返回错误:(550)文件不可用(例如,找不到文件,没有访问权限)。” 550无法存储远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)。 ((FtpWebResponse)ex.Response).StatusDescription“550无法存储/’ABCD.AA.C58FC.ABC1FD.ZP3ABC/examplefile’\r\n” 这是我在C#中得到的 string user = “user”; string pwd = “password”; string ftpfullpath = @”ftp://abc.wyx.state.aa.bb//’ABCD.AA.C58FC.ABC1FD.ZP3ABC’/examplefile'”; try { FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath); ftp.Credentials = new NetworkCredential(user, pwd); ftp.KeepAlive = true; ftp.UseBinary = false; //Use ascii. ftp.Method = WebRequestMethods.Ftp.UploadFile; […]

C# – FtpWebRequest – 通过同一连接/登录的多个请求

我想循环一个FTP文件夹,以检查文件是否已到达 我做: FtpWebRequest request = (FtpWebRequest)WebRequest.Create(“ftp://localhost:8080”); request.Credentials = new NetworkCredential(“anonymous”, “”); request.Method = WebRequestMethods.Ftp.ListDirectoryDetails; while(true) { using (FtpWebResponse response = (FtpWebResponse)request.GetResponse()) using (Stream responseStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(responseStream)) { Console.WriteLine(reader.ReadToEnd()); reader.Close(); response.Close(); } } 但是在第二次迭代中我得到一个例外: 无法读取流

修复 – System.Net.WebException:远程服务器返回错误:(500)语法错误,命令无法识别

我创建了FTP代码来传输文件。 此代码工作正常,但它有时会导致错误500.确切的错误是 – Error: System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> System.Net.WebException: The remote server returned an error: (500) Syntax error, command unrecognized. at System.Net.FtpWebRequest.CheckError() at System.Net.FtpWebRequest.SyncRequestCallback(Object obj) at System.Net.CommandStream.Abort(Exception e) at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage) at System.Net.FtpWebRequest.GetRequestStream() at ST_772dn22cj49ndfddatee.csproj.ScriptMain.Main() — End of inner exception stack trace — 我注意到加载最大文件时出现错误,即大约290 KB。 所有其他文件都不到这个,我也不会有任何例外。 我不知道为什么会这样。 […]

从字符串或流上传文件到FTP服务器

我正在尝试在FTP服务器上创建一个文件,但我所拥有的只是一个字符串或数据流以及应该用它创建的文件名。 有没有办法在流或字符串上创建服务器上的文件(我没有创建本地文件的权限)? string location = “ftp://xxx.xxx.xxx.xxx:21/TestLocation/Test.csv”; WebRequest ftpRequest = WebRequest.Create(location); ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; ftpRequest.Credentials = new NetworkCredential(userName, password); string data = csv.getData(); MemoryStream stream = csv.getStream(); //Magic using (var response = (FtpWebResponse)ftpRequest.GetResponse()) { }

在C#中使用FtpWebRequest时设置端口号

当我尝试使用VS2008作为调试器从C#代码FTP到我的Win 2008服务器时,我一直遇到exception。 我的测试类看起来像这样: public class FTP { private string ftpServerIP = “192.168.10.35:21”; private string ftpUserID = “Administrator”; private string ftpPassword = “XXXXXXXX”; private string uploadToFolder = “uploadtest”; public void Upload(string filename) { FileInfo fileInf = new FileInfo(filename); string uri = “ftp://” + ftpServerIP + “/” + uploadToFolder + “/” + fileInf.Name; FtpWebRequest reqFTP; reqFTP = […]

使用FtpWebRequest下载文件

我正在尝试使用FtpWebRequest下载文件。 private void DownloadFile(string userName, string password, string ftpSourceFilePath, string localDestinationFilePath) { int bytesRead = 0; byte[] buffer = new byte[1024]; FtpWebRequest request = CreateFtpWebRequest(ftpSourceFilePath, userName, password, true); request.Method = WebRequestMethods.Ftp.DownloadFile; Stream reader = request.GetResponse().GetResponseStream(); BinaryWriter writer = new BinaryWriter(File.Open(localDestinationFilePath, FileMode.CreateNew)); while (true) { bytesRead = reader.Read(buffer, 0, buffer.Length); if (bytesRead == 0) break; writer.Write(buffer, […]

使用ftpWebRequest时出错:远程服务器返回错误530未登录

我试图在c#中使用ftpWebRequest我的代码是 // Get the object used to communicate with the server. FtpWebRequest request = (FtpWebRequest)WebRequest.Create(“ftp://192.168.20.10/file.txt”); request.Method = WebRequestMethods.Ftp.UploadFile; // This example assumes the FTP site uses anonymous logon. request.Credentials = new NetworkCredential(“dev\ftp”, “devftp”); // Copy the contents of the file to the request stream. StreamReader sourceStream = new StreamReader(@”\file.txt”); byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd()); sourceStream.Close(); request.ContentLength […]