回答
This看起來不錯。
如何知道文件是否成功上傳? – Illep
讓我困惑的是爲什麼設置FTP地址時包含文件名:... WebRequest.Create(「ftp://www.contoso.com/test.htm」)。當我連接到FTP站點時,我不在尋找特定的文件;我想在那裏發送一個。那麼什麼是「test.htm」?這是FTP站點上的文件嗎?我發送後會發送的文件是? 我的問題是,當我到達我們去的部分Request.GetRequestStream()時,如果我只是提供我的ftp地址,就會炸燬我:「ftp://127.0.0.1/」,說它無效。如果我提供一個文件名,我會得到一個550錯誤(文件不可用)。 –
所以我知道地址必須是一個看起來像這樣的有效URI(在這裏減去多餘的空格):「f t p://127.0.0.1/mytestfile.txt」。如果你離開文件名,它會說Uri不適合這種操作。文件名是你想在遠端調用它的名字,它基本上設置了傳輸。我得到的550錯誤是由於授權問題導致的,無論是在IIS中還是在文件系統級別。我可以通過使用FileZilla FTP客戶端訪問該站點來找到這些信息,該客戶端向您展示了談話內容,其中包含所有線索。 –
正如我在評論中發佈的,你可以看到這個link關於如何上傳文件到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","[email protected]");
// 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();
}
}
}
}
要驗證該文件正確上傳,您可以檢查的響應,它有狀態說明和的StatusCode屬性。
或者,您可以再次調用FTP服務器,在此設置方法request.Method = WebRequestMethods.Ftp.ListDirectory;
。這將返回FTP服務器上的文件列表。
當然,這不會驗證文件是否正確上傳,只是存在一個同名的文件。
我希望這能回答你的問題。
我可以打印結果到「控制檯」('request.Method = WebRequestMethods.Ftp.ListDirectory') – Illep
否方法是請求的屬性,當您設置它並獲取ResponseStream時,您將得到一個文件名列表。 –
@Illep,看看這個鏈接http://social.msdn.microsoft。com/Forums/en-US/ncl/thread/079fb811-3c55-4959-85c4-677e4b20bea3它顯示如何獲取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);
}
}
嘗試流式傳輸數據,而不是單獨加載到內存中。另外using
聲明有助於完美地部署資源。
- 1. 發送.txt文件到ftp
- 2. 加密文件發佈到FTP站點
- 3. 批量文件上傳.txt到FTP
- 4. 上傳.txt文件到FTP服務器
- 5. 使用C#上傳文件到FTP#
- 6. Maven ftp站點插件
- 7. 使用SFTP連接到FTP站點並下載文件
- 8. 使用SQL將CSV文件導出到FTP站點
- 9. 上傳文件到FTP C#
- 10. 創建FTP站點
- 11. 在FTP站點上合併CSV文件
- 12. 到文件(FTP)
- 13. 使用C#編寫和讀取來自FTP的.txt文件
- 14. 批處理文件將文本文件複製到FTP站點
- 15. 如何使用ncftp或ftp使用FTP站點中的目錄中的文件列表創建文件?
- 16. FTP:上傳文件到FTP和驗證
- 17. Maven站點部署使用ftp
- 18. Ftp上傳的文件被損壞,除非「txt」文件c#
- 19. 自動將文本文件上傳到FTP站點
- 20. 如何使用存儲過程從FTP站點獲取文件
- 21. 上傳使用SFTP從FTP站點下載文件
- 22. 使用php cURL移動ftp站點上的文件
- 23. 我使用Powershell從ftp站點下載新文件
- 24. 使用Webclient和PowerShell刪除FTP站點上的文件
- 25. 將.txt文件從ftp保存到文檔文件夾iphone
- 26. 在C#中使用FTP移動文件
- 27. 在C#中使用ftp發送文件
- 28. 使用git-ftp將子文件夾推送到ftp
- 29. 使用FTP客戶端發送文件到FTP服務器
- 30. 是否可以使用PHP將文件從FTP上傳到FTP
谷歌的第一個結果http://msdn.microsoft.com/en-us/library/ms229715.aspx,你有什麼嘗試? –
有沒有辦法讓我知道文件是否成功上傳? – Illep
更多然後檢查它是否存在,如果大小相應,你有幾種檢查方法是否正確。您可以再次下載並檢查它是否具有相同的校驗和。 – albertjan