Я пишу программу, которая загружает файл на удаленный ftp-сервер. Однако скачанные файлы иногда содержат Cyrilli c. Содержимое файла загружается правильно, но имя искажено. Я так понимаю, это из-за кодировки. Пробовал использовать Encoding.GetEncoding(1251).GetString(Encoding.GetEncoding(1251).GetBytes(file.FileName))
и другие кодировки. Не помогает. В то же время скрипт php, хранящийся на том же ftp, корректно загружает файлы с буквами кирилли c.
public void FtpUpload(IFormFile file, string filePath)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://xxx.xxx.xx.xxx/" + filePath);
request.Method = WebRequestMethods.Ftp.UploadFile;
request.Credentials = new NetworkCredential("username", "pass");
byte[] fileBytes;
if (file.Length > 0)
{
using (var ms = new MemoryStream())
{
file.CopyTo(ms);
fileBytes = ms.ToArray();
}
}
else return;
request.ContentLength = fileBytes.Length;
using (Stream request_stream = request.GetRequestStream())
{
request_stream.Write(fileBytes, 0, fileBytes.Length);
request_stream.Close();
}
}
filePath = "Тест.pdf"
Я пробовал использовать HttpUtility.UrlEncode(filePath)
. Ничего не помогает. Подскажите, пожалуйста, как с этим бороться?