FTP上传函数如下,可以确定代码无错internal bool Upload(string fileName, string uploadUrl,string UserName,string Password){//fileName上傳的檔案ex : c:\abc.xml , uploadUrl上傳的FTP伺服器路徑ftp://127.0.0.1,UserName使用者FTP登入帳號 , Password使用者登入密碼Stream requestStream = null; FileStream fileStream = null; FtpWebResponse uploadResponse = null; try { FtpWebRequest uploadRequest = (FtpWebRequest)WebRequest.Create(uploadUrl); uploadRequest.Method = WebRequestMethods.Ftp.UploadFile;//設定Method上傳檔案 uploadRequest.Proxy = null; if (UserName.Length > 0)//如果需要帳號登入 { NetworkCredential nc = new NetworkCredential(UserName, Password); uploadRequest.Credentials = nc; //設定帳號 } requestStream = uploadRequest.GetRequestStream(); fileStream = File.Open(fileName, FileMode.Open); byte[] buffer = new byte[1024]; int bytesRead; while (true) {//開始上傳資料流 bytesRead = fileStream.Read(buffer, 0, buffer.Length); if (bytesRead == 0) break; requestStream.Write(buffer, 0, bytesRead); } requestStream.Close(); uploadResponse = (FtpWebResponse)uploadRequest.GetResponse(); return true; } catch (Exception ex) { throw new Exception(ex.Message); } finally { if (uploadResponse != null) uploadResponse.Close(); if (fileStream != null) fileStream.Close(); if (requestStream != null) requestStream.Close(); }}现有一FTP服务器IP:127.0.0.1 用户名:admin 密码:admin 要实现上传功能该如何?我帖出我的代码,请大家帮忙指正 private void button_Click(object sender, EventArgs e)
{
Stream myStream;
OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "C:\\";
openFileDialog1.Filter = "xls files (*.xls)|*.xls|doc files (*.doc)|*.doc";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true; if ((myStream = openFileDialog1.OpenFile()) != null)
{ Upload(openFileDialog1.FileName, "ftp://127.0.0.1", "admin", "admin");
myStream.Close();
}
}
{
Stream myStream;
OpenFileDialog openFileDialog1 = new OpenFileDialog(); openFileDialog1.InitialDirectory = "C:\\";
openFileDialog1.Filter = "xls files (*.xls)|*.xls|doc files (*.doc)|*.doc";
openFileDialog1.FilterIndex = 2;
openFileDialog1.RestoreDirectory = true; if ((myStream = openFileDialog1.OpenFile()) != null)
{ Upload(openFileDialog1.FileName, "ftp://127.0.0.1", "admin", "admin");
myStream.Close();
}
}
http://topic.csdn.net/u/20091028/13/7f6dc7cd-d0c0-4f40-9356-790acb7c4a01.html
throw new Exception(ex.Message);
这里会提示“请求的URI对此FTP命令无效”
难道是我格式错了?
这个是将你上传的内容写到1.xls中.
不过还是没实现上传,会提示"文件被另外进程使用中",但是当前没有进程在使用该文件
这是为何?
{Upload(openFileDialog1.FileName, "ftp://127.0.0.1", "admin", "admin");
myStream.Close();
}你这是想判断文件是否存在吧?改成下面这样
if ((myStream = openFileDialog1.OpenFile()) != null)
{
//因为你已经打开了文件流,但是又没有关闭,Upload方法中又重新去打开,才会出现问题的
myStream.Close();
Upload(openFileDialog1.FileName, "ftp://127.0.0.1", "admin", "admin");}