远程服务器返回错误:(550)上传文件到FTP使用FtpWebRequest
我需要通过ftp上传文件到主机。在主机上的根目录中创建的/home2/travele2
路径 远程服务器返回错误:(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();
网址必须包含目标文件名:
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
非常感谢。它解决了 – programmer138200
我可以上传文本文件并下载!但上传图片或pdf文件后下载文件损坏。图像无法打开。 – programmer138200
当然,我在回答的第二部分已经介绍了这一点。 –
你加载你的SourceStream看起来有点腥。我会推荐下载的NuGet库的FTP客户端的方式,它会使你的生活轻松了许多。通过良好的文档和示例,FluentFTP是一个不错的选择。
误差似乎从该线到来:'的FtpWebRequest的FtpWebRequest =(的FtpWebRequest)WebRequest.Create( “ftp://00.00.00.00/home2/travele2”) ;'(你有这个文件夹的权限和文件存在吗?)。你可以用'WebException'使用try-catch块,并发现'var status =((FtpWebResponse)e.Response).StatusDescription;'的实际问题。 –
需要什么权限? – programmer138200
文件夹写入访问权限...我假设您已经被授予该文件夹的文件写入访问权限,您可以继续使用'WebException'找到原因,正如我之前提到的。 –