Как загрузить файл .xlsx с помощью FTPWebRequest через C # ASP.NET

Я перепробовал все, чтобы получить файл xlsx для загрузки через FTPWebRequest — безрезультатно. Я пробовал преобразовать тип файла из xlsx в xls и даже в csv, но он просто дает мне файл, полный неразборчивых символов. Все типы файлов загружаются через Chrome, как и ожидалось, без исключений с предоставленным кодом, за исключением файлов xlsx.

Когда я пытаюсь загрузить файл xlsx с помощью этого кода, я получаю следующую ошибку от excel: «Мы обнаружили проблему с некоторым содержимым в ‘filename.xlsx’. Вы хотите, чтобы мы восстановили столько, сколько мы можем? Если вы доверяете источник этой книги, нажмите «Да» ». После нажатия «Да» появилось сообщение «Microsoft Excel пытается открыть и восстановить файл. Чтобы снова запустить этот процесс, выберите« Открыть и восстановить »в диалоговом окне« Открыть файл ». Выполнение этих инструкций создает бесконечный цикл одних и тех же сообщений.

Любая помощь по этому поводу была бы замечательной! Кроме того, я попытался изменить тип содержимого на «application / vnd.openxmlformats-officedocument.spreadsheetml.sheet» и «application / vnd.ms-excel», и ни один из них не работает.

string ftpfilename = «ftp://ftpserverinfo/randomfilename.xlsx»; string filename = «randomfilename.xlsx»; FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpfilename)); request.Method = WebRequestMethods.Ftp.DownloadFile; request.Credentials = new NetworkCredential(username, password); request.UseBinary = true; request.KeepAlive = true; FtpWebResponse response = (FtpWebResponse)request.GetResponse(); Stream stream = response.GetResponseStream(); byte[] bytes = new byte[2048]; int i = 0; MemoryStream mStream = new MemoryStream(); do { i = stream.Read(bytes, 0, bytes.Length); mStream.Write(bytes, 0, i); } while (i != 0); context.Response.Clear(); context.Response.ClearHeaders(); context.Response.ClearContent(); context.Response.ContentType = MimeMapping.GetMimeMapping(filename); context.Response.AddHeader(«content-disposition», @»attachment;filename=» + filename); context.Response.BinaryWrite(mStream.GetBuffer());

Источник: ledsshop.ru

Стиль жизни - Здоровье!