远程服务器返回错误:(550)上传文件到FTP使用FtpWebRequest

远程服务器返回错误:(550)上传文件到FTP使用FtpWebRequest

问题描述:

我需要通过ftp上传文件到主机。在主机上的根目录中创建的/home2/travele2路径 enter image description here远程服务器返回错误:(550)上传文件到FTP使用FtpWebRequest

我可以通过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”) ;'(你有这个文件夹的权限和文件存在吗?)。你可以用'WebException'使用try-catch块,并发现'var status =((FtpWebResponse)e.Response).StatusDescription;'的实际问题。 –

+0

需要什么权限? – programmer138200

+0

文件夹写入访问权限...我假设您已经被授予该文件夹的文件写入访问权限,您可以继续使用'WebException'找到原因,正如我之前提到的。 –

网址必须包含目标文件名:

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

当然,我在回答的第二部分已经介绍了这一点。 –

你加载你的SourceStream看起来有点腥。我会推荐下载的NuGet库的FTP客户端的方式,它会使你的生活轻松了许多。通过良好的文档和示例,FluentFTP是一个不错的选择。

检查出来: https://github.com/robinrodricks/FluentFTP

+0

在推荐软件时,您应明确说明您是否隶属于该项目。 – Fildor

+0

首先它是一个开放源代码库...并且我不以任何方式与这个项目相关。 – kioannou