The remote server returned an error: (550) File unavailable (e.g., file not found, no access) in .NET
The remote server returned an error: (550) File unavailable (e.g., file not found, no access) in .NET
我正在尝试将图像上传到 FTP 服务器。但是我收到一个错误
The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
这是我的代码:
public void Upload(string fileName, string base64, string path)
{
var bytes = Convert.FromBase64String(base64);
var uri = new Uri($"ftp://{Host}/{path}/{fileName}");
var request = (FtpWebRequest)WebRequest.Create(uri);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UsePassive = false;
request.Credentials = new NetworkCredential(Username, Password);
request.ContentLength = bytes.Length;
request.UseBinary = true;
request.KeepAlive = false;
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
}
using (var response = (FtpWebResponse)request.GetResponse())
{
if (response != null)
response.Close();
}
}
我的Host
是这样的:localhost:port-number
。
路径是一个名为 Images
的文件夹。
所以我想将图像保存在 localhost:port-number/Images
但我收到了那个错误。
当我从浏览器打开 FTP 点时,它工作正常,我可以看到内容。这里有什么问题?
一般来说,将 FtpWebRequest.UsePassive
设置为 false
是个坏主意。坚持使用默认 true
,除非您有充分的理由使用活动模式。
阅读 我的 关于 FTP connection modes 的文章以了解原因。
服务器可能 returns 一条带有 550
代码的相关错误消息。但是 .NET 框架中的 FTP 实现将所有 FTP 状态代码转换为它自己的(本地化)消息。特别是代码 550 被翻译成 “文件不可用”。在某些情况下(可能像这个),隐藏了真正的问题。
我正在尝试将图像上传到 FTP 服务器。但是我收到一个错误
The remote server returned an error: (550) File unavailable (e.g., file not found, no access).
这是我的代码:
public void Upload(string fileName, string base64, string path)
{
var bytes = Convert.FromBase64String(base64);
var uri = new Uri($"ftp://{Host}/{path}/{fileName}");
var request = (FtpWebRequest)WebRequest.Create(uri);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UsePassive = false;
request.Credentials = new NetworkCredential(Username, Password);
request.ContentLength = bytes.Length;
request.UseBinary = true;
request.KeepAlive = false;
using (var requestStream = request.GetRequestStream())
{
requestStream.Write(bytes, 0, bytes.Length);
requestStream.Close();
}
using (var response = (FtpWebResponse)request.GetResponse())
{
if (response != null)
response.Close();
}
}
我的Host
是这样的:localhost:port-number
。
路径是一个名为 Images
的文件夹。
所以我想将图像保存在 localhost:port-number/Images
但我收到了那个错误。
当我从浏览器打开 FTP 点时,它工作正常,我可以看到内容。这里有什么问题?
一般来说,将 FtpWebRequest.UsePassive
设置为 false
是个坏主意。坚持使用默认 true
,除非您有充分的理由使用活动模式。
阅读 我的 关于 FTP connection modes 的文章以了解原因。
服务器可能 returns 一条带有 550
代码的相关错误消息。但是 .NET 框架中的 FTP 实现将所有 FTP 状态代码转换为它自己的(本地化)消息。特别是代码 550 被翻译成 “文件不可用”。在某些情况下(可能像这个),隐藏了真正的问题。