某些大的“.xlsx”扩展文件在通过 SftpClient 下载后无法打开
Certain big '.xlsx' extension files failed to open after downloaded via SftpClient
我正在尝试使用 SftpClient 从远程 linux 服务器将文件下载到我的本地计算机。
这是我下载文件的代码
public MemoryStream DownloadFile2(string path)
{
var connectionInfo = _taskService.GetBioinformaticsServerConnection();
MemoryStream fileStream = new MemoryStream();
using (SftpClient client = new SftpClient(connectionInfo))
{
client.ConnectionInfo.Timeout = TimeSpan.FromSeconds(200);
client.Connect();
client.DownloadFile(path, fileStream);
fileStream.Seek(0, SeekOrigin.Begin);
var response = new MemoryStream(fileStream.GetBuffer());
return fileStream;
}
}
这里是调用上述方法的控制器。
public FileResult DownloadFile(string fullPath, string fileName)
{
if (!string.IsNullOrEmpty(fileName))
{
fullPath = string.Concat(fullPath, "/", fileName);
}
var ms = _reportAPI.DownloadFile2(fullPath);
var ext = Path.GetExtension(fullPath);
if (ext == ".xlsx")
{
return File(ms, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
}
return File(ms, "application/octet-stream", fileName);
}
我已经设法对大多数文件执行此操作,但是对于某些大型“.xlsx”扩展文件,当我尝试打开它时,出于某种原因,我收到以下错误。
如果我在 IISExpress 上,我在点击 'Yes' 按钮后仍然设法打开它,但是如果我使用普通 IIS,它在点击 [=29 后无法打开文件=] 按钮。
对于其他类型的文件或更小的 excel 文件,它按预期工作。
知道如何修改我的代码来解决这个问题吗?
我可以通过如下修改我的代码来解决这个问题
public MemoryStream DownloadFile2(string path)
{
var connectionInfo = _taskService.GetBioinformaticsServerConnection();
MemoryStream fileStream = new MemoryStream();
byte[] fileBytes = null;
using (SftpClient client = new SftpClient(connectionInfo))
{
client.ConnectionInfo.Timeout = TimeSpan.FromSeconds(200);
client.Connect();
client.DownloadFile(path, fileStream);
fileBytes = fileStream.ToArray();
var response = new MemoryStream(fileBytes);
return response;
}
}
我正在尝试使用 SftpClient 从远程 linux 服务器将文件下载到我的本地计算机。
这是我下载文件的代码
public MemoryStream DownloadFile2(string path)
{
var connectionInfo = _taskService.GetBioinformaticsServerConnection();
MemoryStream fileStream = new MemoryStream();
using (SftpClient client = new SftpClient(connectionInfo))
{
client.ConnectionInfo.Timeout = TimeSpan.FromSeconds(200);
client.Connect();
client.DownloadFile(path, fileStream);
fileStream.Seek(0, SeekOrigin.Begin);
var response = new MemoryStream(fileStream.GetBuffer());
return fileStream;
}
}
这里是调用上述方法的控制器。
public FileResult DownloadFile(string fullPath, string fileName)
{
if (!string.IsNullOrEmpty(fileName))
{
fullPath = string.Concat(fullPath, "/", fileName);
}
var ms = _reportAPI.DownloadFile2(fullPath);
var ext = Path.GetExtension(fullPath);
if (ext == ".xlsx")
{
return File(ms, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
}
return File(ms, "application/octet-stream", fileName);
}
我已经设法对大多数文件执行此操作,但是对于某些大型“.xlsx”扩展文件,当我尝试打开它时,出于某种原因,我收到以下错误。
如果我在 IISExpress 上,我在点击 'Yes' 按钮后仍然设法打开它,但是如果我使用普通 IIS,它在点击 [=29 后无法打开文件=] 按钮。
对于其他类型的文件或更小的 excel 文件,它按预期工作。
知道如何修改我的代码来解决这个问题吗?
我可以通过如下修改我的代码来解决这个问题
public MemoryStream DownloadFile2(string path)
{
var connectionInfo = _taskService.GetBioinformaticsServerConnection();
MemoryStream fileStream = new MemoryStream();
byte[] fileBytes = null;
using (SftpClient client = new SftpClient(connectionInfo))
{
client.ConnectionInfo.Timeout = TimeSpan.FromSeconds(200);
client.Connect();
client.DownloadFile(path, fileStream);
fileBytes = fileStream.ToArray();
var response = new MemoryStream(fileBytes);
return response;
}
}