Вопросы

Как загрузить файл .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());

Похожие записи

Что такое действительный указатель в gcc linux x86-64 C ++?

admin

Как динамически установить значение по умолчанию в WTForms RadioField?

admin

Как исправить ошибку «Доступ к XMLHttpRequest по адресу« http: // localhost: 8000 / api / companies »из источника« http: // localhost: 3000 »был заблокирован политикой CORS»

admin

Есть ли более эффективный способ получения пакетов из набора данных hdf5?

admin

Моя Анаконда внезапно перестала работать

admin

Пытался обновить до PHP 8.0, и все, что было установлено композитором, даже php, не работает

admin