簡體   English   中英

遠程服務器返回錯誤:(550) on upload file to FTP using FtpWebRequest

[英]The remote server returned an error: (550) on upload file to FTP using FtpWebRequest

我需要通過 ftp 將文件上傳到主機。 在主機根目錄上創建的/home2/travele2路徑在此處輸入圖片說明

我可以通過 FileZilla 程序將文件上傳到主機,但是當我嘗試通過網站上傳文件時,出現以下錯誤:

遠程服務器返回錯誤:(550) 文件不可用(例如,找不到文件,無法訪問)。

有什么問題?

// Get the object used to communicate with the server.  
FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create("ftp://00.00.00.00/home2/travele2");
ftpWebRequest.Method = WebRequestMethods.Ftp.UploadFile;
// This example assumes the FTP site uses anonymous logon.  
ftpWebRequest.Credentials = new NetworkCredential("aaaaaaa", "0000000");

// Copy the contents of the file to the request stream.  
StreamReader sourceStream = new StreamReader(Server.MapPath("/Content/Site.pdf"));
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
ftpWebRequest.ContentLength = fileContents.Length;

Stream requestStream = ftpWebRequest.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();

FtpWebResponse response = (FtpWebResponse)ftpWebRequest.GetResponse();

Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);

response.Close();

在此處輸入圖片說明

URL 必須包含目標文件名:

string url = "ftp://ftp.example.com/home2/travele2/Site.pdf";
FtpWebRequest ftpWebRequest = (FtpWebRequest)WebRequest.Create(url);

FtpWebRequest怎么會知道,使用什么名稱?


一旦你解決了這個問題,你會發現上傳破壞了文件,因為你將文件視為 UTF-8 編碼的文本。 什么是廢話,因為PDF是二進制文件。

有關正確的代碼,請參閱:
在 C#/.NET 中向/從 FTP 服務器上傳和下載文件

你加載你的 sourceStream 的方式看起來有點可疑。我建議下載一個 nuget 庫 ftp 客戶端,它會讓你的生活更輕松。 FluentFTP 是一個很好的選擇,有很好的文檔和例子。

看看: https : //github.com/robinrodricks/FluentFTP

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM