C# FTP错误553-不允许使用umlauts文件名
我使用C#上传文件时遇到问题: 当我试图上传一个路径和/或文件名中包含德语Umlauts(ä,ö,ü)的文件时,我收到FTP错误553“文件名不允许” 我可以上传没有umlauts的文件,没有任何问题。我已经检查了编码是否正确,并且在我的FTP上是否启用了utf-8。我真的不想更改任何包含umlauts的文件,所以我希望我能在这里做些什么 当我通过Filezilla上传文件时,一切都很好。下载或获取这些文件也没有问题。仅上载它们会导致错误 这很好:C# FTP错误553-不允许使用umlauts文件名,c#,upload,ftp,diacritics,C#,Upload,Ftp,Diacritics,我使用C#上传文件时遇到问题: 当我试图上传一个路径和/或文件名中包含德语Umlauts(ä,ö,ü)的文件时,我收到FTP错误553“文件名不允许” 我可以上传没有umlauts的文件,没有任何问题。我已经检查了编码是否正确,并且在我的FTP上是否启用了utf-8。我真的不想更改任何包含umlauts的文件,所以我希望我能在这里做些什么 当我通过Filezilla上传文件时,一切都很好。下载或获取这些文件也没有问题。仅上载它们会导致错误 这很好: ftp://ftp.myurl.com/mai
ftp://ftp.myurl.com/mainfolder/folder/filename [id].png
这将给我错误553:
ftp://ftp.myurl.com/mainfolder/folder/filenäme [id].png
ftp://ftp.myurl.com/mainfolder/földer/filename [id].png
以下是我的源代码:
string fullpath = ftp.url + folder + "/" + file.name;
fullpath = fullpath.Replace("ä", "%C3%A4").Replace("ü", "%C3%BC").Replace("ö", "%C3%B6").Replace(" ","%20");
Uri uri = new Uri(fullpath);
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.UseBinary = true;
request.KeepAlive = false;
request.UsePassive = false;
request.Timeout = 10000;
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential(Data.user, Data.password);
FileStream fs = new FileStream(file.fullname, FileMode.Open, FileAccess.Read);
BinaryReader sourceStream = new BinaryReader(fs, Encoding.UTF8);
Stream requestStream = request.GetRequestStream();
byte[] chunk;
chunk = sourceStream.ReadBytes(1024);
int totalLength = 0;
while (chunk.Length > 0)
{
requestStream.Write(chunk, 0, chunk.Length);
totalLength += chunk.Length;
chunk = sourceStream.ReadBytes(1024);
}
requestStream.Close();
sourceStream.Close();
request.ContentLength = totalLength;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription);
response.Close();
从你的代码中可以看出你已经在替换不寻常的字符了,我认为问题在于第二行的替换缺少一个特殊的字符来编码。例如,我可以用umlauts上传一个文件,没有任何问题。我甚至不需要你的URL编码代码。向我们显示一个日志文件,包括和FileZilla。从您的代码来看,这表明您已经在替换不寻常的字符,我认为问题在于第二行的替换缺少一个需要编码的特殊字符。例如,我可以用umlauts上传一个文件,没有任何问题。我甚至不需要你的URL编码代码。向我们显示一个日志文件,包括和FileZilla。