我正在尝试上传一个图像到FTP服务器。但我搞错了
远程服务器返回一个错误:(550)文件不可用(例如,找不到文件,没有访问)。
这是我的代码:
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点时,它工作得很好,我可以看到内容。这里怎么了?
发布于 2020-09-03 14:14:29
通常,将FtpWebRequest.UsePassive设置为false是个坏主意。坚持使用默认的true,除非您有充分的理由使用活动模式。
阅读我在FTP连接模式上的文章,了解原因。
服务器可能会用550代码返回相关的错误消息。但是,.NET框架中的FTP实现将所有FTP状态代码转换为自己的(本地化)消息。特别是代码550被翻译成“文件不可用”。在某些情况下(可能就像这个例子),这掩盖了真正的问题。
https://stackoverflow.com/questions/63724275
复制相似问题