因为我可以将所有.txt文件从一个文件夹上传到FTP文件夹。我只能上传一个文件,但我需要将计算机上文件夹内的所有文件上传到FTP文件夹
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create("ftp://123.456.789.00/folder1/folder2" + "/" + Path.GetFileName("D:\\folderUpload\\1test.txt"));
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("username", "pass");
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = false;
FileStream stream = File.OpenRead("D:\\folderUpload\\1test.txt");
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Close();
Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();
MessageBox.Show("Upload OK");
答案 0 :(得分:0)
Tou可以做类似的事情(如果你想保留原始树或并行化它可以改进......):
static public void Main(string[] args)
{
DirectoryInfo directory = DirectoryInfo(@"C:\PathToUpload");
foreach(var file in directory.GetFiles(*)){
UploadFile(file, "ftp://123.456.789.00/folder1/folder2");
}
MessageBox.Show("Upload OK");
}
public void UploadFile(FileInfo file,string ftpUrl){
FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(ftpUrl + "/" + file.Name);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("username", "pass");
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = false;
FileStream stream = File.OpenRead("D:\\folderUpload\\1test.txt");
byte[] buffer = new byte[stream.Length];
stream.Read(buffer, 0, buffer.Length);
stream.Close();
Stream reqStream = request.GetRequestStream();
reqStream.Write(buffer, 0, buffer.Length);
reqStream.Close();
}
答案 1 :(得分:-1)
public static void uploadFolder(string source, string uploadpath)
{
WebRequest request = WebRequest.Create(uploadpath);
request.Credentials = new NetworkCredential(userName, password);
string[] files = Directory.GetFiles(source, "*.*");
string[] subFolders = Directory.GetDirectories(source);
foreach(string file in files)
{
request = WebRequest.Create(file);
request.Method = WebRequestMethods.Ftp.UploadFile;
}
foreach(string subFolder in subFolders)
{
request = WebRequest.Create(uploadpath + "/"+ Path.GetFileName(subFolder));
request.Method = WebRequestMethods.Ftp.MakeDirectory; <br/>
request.Credentials = new NetworkCredential(userName,password);
uploadFolder(subFolder, uploadpath+"/"+Path.GetFileName(subFolder));
}
}