我已尝试一切方法通过 FTPWebRequest 下载 xlsx 文件,但无济于事。我尝试将文件类型从 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());
12345678_0001
相关分类