FTP文件传输C#

编程入门 行业动态 更新时间:2024-10-24 14:21:16
本文介绍了FTP文件传输C#的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我需要通过FTP将文件从一台服务器传输到另一台服务器。我已经使用了下面的代码。

在很多文件中,这只是部分传输单个文件。例如。我有一个56KB的源文件。在运行下面的代码后,源文件将减少到0kb,并将0KB文件传输到目标文件,而不是56 KB的文件大小。

我构建了将所有文件从源文件传输到目标文件的代码。但是,如上所述,在传输单个0KB文件后,它并没有取得进一步的进展。

请帮助我。

static void Main(string [] args) { 字符串DISCH_DEST = System.Configuration.ConfigurationManager.AppSettings [DISCH_DEST ]; //包含源服务器中的源文件夹 string FTP_DISCH = System.Configuration.ConfigurationManager.AppSettings [FTP_DISCH]; // FTP路径(ftp:// *********** /)字符串USERNAME = System.Configuration.ConfigurationManager.AppSettings [USERNAME]; string PASSWORD = System.Configuration.ConfigurationManager.AppSettings [PASSWORD]; DirectoryInfo DISCH_Directory =新的DirectoryInfo(DISCH_DEST); FileInfo [] DISCH_Files = DISCH_Directory.GetFiles(*。*); foreach(DISCH_Files中的var f)//从BULK FOLDER(IN)中获取文件 { 字符串FN = Path.GetFileName(f.FullName); int bufferSize = 1024; FtpWebRequest REQ =(FtpWebRequest)WebRequest.Create(new Uri(String.Format({0} / {1},FTP_DISCH,FN))); REQ.Credentials = new NetworkCredential(USERNAME,PASSWORD); REQ.Method = WebRequestMethods.Ftp.UploadFile; 流FTP_Stream = REQ.GetRequestStream(); FileStream LOCAL_FileStream = new FileStream(f.FullName,FileMode.Create); byte [] bytebuffer = new byte [bufferSize]; int bytesSent = FTP_Stream.Read(bytebuffer,0,bufferSize); 尝试 { while(bytesSent!= 0) { LOCAL_FileStream.Write(bytebuffer,0,bytesSent); bytesSent = FTP_Stream.Read(bytebuffer,0,bytesSent); catch(Exception ex){Console.WriteLine(ex.ToString()); } LOCAL_FileStream.Close(); FTP_Stream.Close(); REQ = null; } }

在许多文件中,这只是部分传输单个文件。例如。我有一个56KB的源文件。在运行下面的代码后,源文件将减少到0kb,并将0KB文件传输到目标文件,而不是56 KB的文件大小。

我构建了将所有文件从源文件传输到目标文件的代码。但是在传输上面的单个0KB文件后,它并没有进一步发展。

请帮助我。

解决

您的代码:

流FTP_Stream = REQ.GetRequestStream(); FileStream LOCAL_FileStream = new FileStream(f.FullName,FileMode.Create); byte [] bytebuffer = new byte [bufferSize]; int bytesSent = FTP_Stream.Read(bytebuffer,0,bufferSize);

您正在创建一个新的流,然后从ftp服务器读取它以放入它。 。

如果您发送的文件不是FileMode.Create,因为它会生成一个新文件,但是FileMode.Open。​​

你也一定会从LOCAL_FileStream中读取数据并写入FTP_STream ....

I need to transfer files on FTP from one server to other. I have used the below code.

Out of many files this is transferring only a single file partially. For ex. I have a source file of 56KB. After running the below code, the source file is reduced to 0kb and a 0KB file was transferred to the destination instead of 56 KB file size.

I built code to transfer all the files from source to destination. But its not progressing further after transferring a single 0KB file as above.

Please help me.

static void Main(string[] args) { string DISCH_DEST = System.Configuration.ConfigurationManager.AppSettings["DISCH_DEST"]; //Contains the source folder in source server string FTP_DISCH = System.Configuration.ConfigurationManager.AppSettings["FTP_DISCH"]; // FTP path (ftp://***********/) string USERNAME = System.Configuration.ConfigurationManager.AppSettings["USERNAME"]; string PASSWORD = System.Configuration.ConfigurationManager.AppSettings["PASSWORD"]; DirectoryInfo DISCH_Directory = new DirectoryInfo(DISCH_DEST); FileInfo[] DISCH_Files = DISCH_Directory.GetFiles("*.*"); foreach (var f in DISCH_Files) //FETCHING FILES FROM THE BULK FOLDER (IN) { string FN = Path.GetFileName(f.FullName); int bufferSize = 1024; FtpWebRequest REQ = (FtpWebRequest)WebRequest.Create(new Uri(String.Format("{0}/{1}",FTP_DISCH,FN))); REQ.Credentials = new NetworkCredential(USERNAME, PASSWORD); REQ.Method = WebRequestMethods.Ftp.UploadFile; Stream FTP_Stream = REQ.GetRequestStream(); FileStream LOCAL_FileStream = new FileStream(f.FullName, FileMode.Create); byte[] bytebuffer = new byte[bufferSize]; int bytesSent = FTP_Stream.Read(bytebuffer, 0, bufferSize); try { while (bytesSent != 0) { LOCAL_FileStream.Write(bytebuffer, 0, bytesSent); bytesSent = FTP_Stream.Read(bytebuffer, 0, bytesSent); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } LOCAL_FileStream.Close(); FTP_Stream.Close(); REQ = null; } }

Out of many files this is transferring only a single file partially. For ex. I have a source file of 56KB. After running the below code, the source file is reduced to 0kb and a 0KB file was transferred to the destination instead of 56 KB file size.

I built code to transfer all the files from source to destination. But its not progressing further after transferring a single 0KB file as above.

Please help me.

解决方案

Right now I dont see why your code would send any files.

Your code:

Stream FTP_Stream = REQ.GetRequestStream(); FileStream LOCAL_FileStream = new FileStream(f.FullName, FileMode.Create); byte[] bytebuffer = new byte[bufferSize]; int bytesSent = FTP_Stream.Read(bytebuffer, 0, bufferSize);

You're making a new stream, and then reading from the ftp server to put in it...

If you were sending a file it wouldnt be FileMode.Create, as that makes a new file, but FileMode.Open.

You also surely would read from LOCAL_FileStream and write to FTP_STream....

更多推荐

FTP文件传输C#

本文发布于:2023-11-07 22:40:05,感谢您对本站的认可!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件传输   FTP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!