C# 使用C将FTP.txt文件发送到FTP站点#

C# 使用C将FTP.txt文件发送到FTP站点#,c#,ftp,C#,Ftp,我有一个TXT文件,我必须FTP将其发送到FTP站点 我找不到一个完整的教程来帮助我编写代码。有人能给我指出一个好的教程,或者一些代码吗?开始看起来不错。正如我在评论中发布的,你可以看到这个示例,了解如何将文件上传到FTP服务器 链接中的代码: using System; using System.IO; using System.Net; using System.Text; namespace Examples.System.Net { public class WebReques

我有一个
TXT
文件,我必须
FTP
将其发送到
FTP站点


我找不到一个完整的教程来帮助我编写代码。有人能给我指出一个好的教程,或者一些代码吗?

开始看起来不错。

正如我在评论中发布的,你可以看到这个示例,了解如何将文件上传到FTP服务器

链接中的代码:

using System;
using System.IO;
using System.Net;
using System.Text;

namespace Examples.System.Net
{
    public class WebRequestGetExample
    {
        public static void Main ()
        {
            // Get the object used to communicate with the server.
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.contoso.com/test.htm");
            request.Method = WebRequestMethods.Ftp.UploadFile;

            // This example assumes the FTP site uses anonymous logon.
            request.Credentials = new NetworkCredential ("anonymous","janeDoe@contoso.com");

            // Copy the contents of the file to the request stream.
            StreamReader sourceStream = new StreamReader("testfile.txt");
            byte [] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
            sourceStream.Close();
            request.ContentLength = fileContents.Length;

            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContents, 0, fileContents.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

            response.Close();
            }
        }
    }
}
要验证文件是否正确上载,可以检查响应,它具有StatusDescription和StatusCode属性

或者,再次调用FTP服务器,在其中设置方法
request.method=WebRequestMethods.FTP.ListDirectory。这将返回FTP服务器上的文件列表

当然,这不会验证文件是否正确上载,只验证是否存在同名文件


我希望这能回答您的问题。

您也可以尝试此代码,它也适用于其他文件扩展名

string ftpUrl = "ftp://server//foldername/fileName.ext";
string fileToUploaded = "c:/fileName.ext";
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(ftpUrl);
request.Proxy = new WebProxy(); //-----Proxy bypassing(The requested FTP command is not supported when using HTTP proxy)
request.Method = WebRequestMethods.Ftp.UploadFile;  
                request.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
                using (var requestStream = request.GetRequestStream())
                {
                    using (var input = File.OpenRead(fileToBeUploaded))
                    {
                        input.CopyTo(requestStream);
                    }
                }

尝试流式传输数据,而不是单独将其加载到内存中。另外
使用
语句有助于完美地配置资源。

在谷歌上的第一个结果,你尝试了什么?有没有办法知道文件是否上传成功?更多的是检查文件是否存在以及大小是否一致。你几乎没有办法检查文件是否正确。您可以再次下载该文件并检查其是否具有相同的校验和。我如何知道该文件是否已成功上载?让我困惑的是,为什么在设置FTP地址时包含文件名:…WebRequest.Create(“)。当我连接到FTP站点时,我并不是在寻找特定的文件;我想将一个文件发送到该站点。那么什么是“test.htm“?FTP站点上已经有一个文件了吗?它是我发送后要发送的文件吗?我的问题是,当我到达我们要去的部分Request.GetRequestStream()时,如果我只提供我的FTP地址,它会对我产生冲击:“说它无效。如果我提供一个文件名,我会得到一个550错误(文件不可用)。因此,我了解到地址必须是如下所示的有效URI(减去此处的额外空格):“f t p://127.0.0.1/mytestfile.txt“。如果您不使用文件名,则表示Uri对于此类操作无效。文件名是您希望在远程端调用的文件名,它基本上设置了传输。我收到的550个错误是由于授权问题造成的,无论是在IIS中还是在文件系统级别。我可以通过使用FileZilla FTP客户端访问站点来定位这些内容,该客户端向您显示包含所有线索的对话。我是否可以将结果打印到
控制台
request.Method=WebRequestMethods.FTP.ListDirectory
)请求中没有方法是属性,当您设置并获得响应时,您将获得一个文件名列表。@Illep,看看这个链接,它显示了如何获得FTP服务器上的文件列表。但是,显示远程FTP服务器中所有文件的代码是什么?代码中出现了哪一行?@Illep,看看链接它相当简单,信息以流的形式返回,您只需将其转换为字符串。如果你需要更多的信息,开始一个新的问题,因为你已经接受了答案。