2017-10-05 49 views
3

ftp経由でファイルをアップロードする必要があります。ホストのルートに作成された/home2/travele2パス enter image description hereリモートサーバがエラーを返しました:FtpWebRequestを使用してアップロードファイルに(550)をアップロードしました

私がホストにFileZillaのプログラムを経由してファイルをアップロードすることができますが、私は、ウェブサイト経由でファイルをアップロードしようとすると、それは私に、このエラーを取得:

The remote server returned an error: (550) File unavailable (e.g., file not found, no access).

を何問題ですか?

// 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(); 

enter image description here

+0

エラーがこの行から来ると思われる: 'たFtpWebRequestたFtpWebRequest =(たFtpWebRequest)WebRequest.Create( "ftp://00.00.00.00/home2/travele2") ; '(あなたはこのフォルダとファイルが存在していますか?) try-catchブロックを 'WebException'とともに使用し、実際の問題を' var status =((FtpWebResponse)e.Response).StatusDescription; 'で見つけることができます。 –

+0

どのような権限が必要ですか? – programmer138200

+0

フォルダの書き込みアクセス許可...あなたはすでにそのフォルダのファイル書き込みアクセス権が与えられていると思いますが、前述のように 'WebException'で原因を見つけることができます。 –

答えて

3

URLは、ターゲットファイル名含めることがあります。

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

は他にどのようにFtpWebRequestは知っているだろうが、どのような名前を使用するには?


そして、あなたがいることが解決したら、あなたはUTF-8でエンコードされたテキストとしてファイルを扱うようアップロードは、ファイルが破損していることがわかります。 PDFはバイナリファイルなのでナンセンスとは何ですか?正しいコードについて

、参照:

Upload and download a binary file to/from FTP server in C#/.NET
+0

ありがとうございました。それは解決しました – programmer138200

+0

私はテキストファイルをアップロードし、現在ダウンロードすることができます!しかし、ダウンロード画像やPDFファイルをダウンロードした後にファイルが破損した場合。画像を開くことはできません。 – programmer138200

+0

確かに、私は答えの2番目の部分でそれをカバーしました。 –

-1

あなたのsourceStreamは種類の魚に見える読み込む方法..私はそれはあなたの人生がずっと楽になります、nugetライブラリFTPクライアントをダウンロードすることをお勧めします。 FluentFTPは、良い文書や例があれば良い選択です。

それをチェックアウト: https://github.com/robinrodricks/FluentFTP

+0

ソフトウェアを推薦するときは、あなたがプロジェクトに加盟しているかどうかを明確に述べる必要があります。 – Fildor

+0

まず第一に、オープンソースライブラリです...そして、私はこのプロジェクトには全く関係がありません。 – kioannou

関連する問題