C# winform程序 怎么向ftp文件服务器上传文件?? 在线等。。。
C# winform程序 怎么向ftp文件服务器上传文件?
我用的方法:System.IO.File.Move(sourcepath, @"ftp:\\177.19.1.8\kaikake\TEST\" + filename);
(比如ftp:\\177.19.1.8\kaikake\TEST\是一文件服务器地址)
但是 提示错误信息: 不支持这种路径格式 应该怎么写?? 请高人指教!! 谢谢了
还需要在程序中设置登陆名和密码吗? 如果需要,应该怎么设置?
------解决方案--------------------
在.net 2.0 中添加了对许多ftp的支持,使用ftp变得非常简单了。
首先,WebClient支以已经开始支持ftp协议了。
比如说要从远程服务器上下载文件,只要使用两条命令就可以完成。
WebClient webClient = new WebClient();
webClient.DownloadFile("ftp://username:password@192.168.1.1/123.txt", @"f:\123.txt");
上传文件到远程服务器也是一样简单。
WebClient webClient = new WebClient();
webClient.UploadFile("ftp://username:password@192.168.1.1/456.txt", @"f:\123.txt");
------解决方案--------------------//ftp方式上传
public static int UploadFtp(string filePath, string filename, string ftpServerIP, string ftpUserID, string ftpPassword)
{
FileInfo fileInf = new FileInfo(filePath + "\\" + filename);
string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
FtpWebRequest reqFTP;
// Create FtpWebRequest object from the Uri provided
reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
try
{
// Provide the WebPermission Credintials
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
// By default KeepAlive is true, where the control connection is not closed
// after a command is executed.
reqFTP.KeepAlive = false;
// Specify the command to be executed.
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
// Specify the data transfer type.
reqFTP.UseBinary = true;
// Notify the server about the size of the uploaded file
reqFTP.ContentLength = fileInf.Length;
// The buffer size is set to 2kb
int buffLength = 2048;
byte[] buff = new byte[buffLength];
int contentLen;
// Opens a file stream (System.IO.FileStream) to read the file to be uploaded
//FileStream fs = fileInf.OpenRead();
FileStream fs = fileInf.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
// Stream to which the file to be upload is written
Stream strm = reqFTP.GetRequestStream();
// Read from the file stream 2kb at a time
contentLen = fs.Read(buff, 0, buffLength);
// Till Stream content ends
while (contentLen != 0)
{
// Write Content from the file stream to the FTP Upload Stream
strm.Write(buff, 0, contentLen);
contentLen = fs.Read(buff, 0, buffLength);
}
// Close the file stream and the Request Stream
strm.Close();
fs.Close();
return 0;
}
catch (Exception ex)
{
reqFTP.Abort();
Logging.WriteError(ex.Message + ex.StackTrace);
return -2;
}