我想将 excel 文件直接从 ftp 站点加载到内存流中。然后我想使用 OpenExcel(Stream) 方法在 FarPoint Spread 控件中打开文件。我的问题是我不确定是否可以将文件直接下载到内存中。有谁知道这是否可能?
问问题
57045 次
3 回答
40
是的,您可以将文件从 FTP 下载到内存。
我认为您甚至可以将来自 FTP 服务器的 Stream 传递给 FarPoint 进行处理。
WebRequest request = FtpWebRequest.Create("ftp://asd.com/file");
using (WebResponse response = request.GetResponse())
{
Stream responseStream = response.GetResponseStream();
OpenExcel(responseStream);
}
使用 WebClient 你几乎可以做同样的事情。通常使用 WebClient 更容易,但为您提供更少的配置选项和控制(例如:无超时设置)。
WebClient wc = new WebClient();
using (MemoryStream stream = new MemoryStream(wc.DownloadData("ftp://asd.com/file")))
{
OpenExcel(stream);
}
于 2013-10-30T15:16:19.640 回答
24
看看WebClient.DownloadData。您应该能够将文件目录下载到内存而不是先将其写入文件。
这是未经测试的,但类似于:
var spreadSheetStream
= new MemoryStream(new WebClient().DownloadData(yourFilePath));
不过,我对 FarPoint 不熟悉,要说流是否可以直接与该OpenExcel
方法一起使用。在线示例显示了与 a 一起使用的方法FileStream
,但我认为任何类型的Stream
都可以接受。
于 2013-10-30T15:22:37.073 回答
0
将文件从 URL 下载到内存。 我的回答并未完全显示如何下载文件以在 Excel 中使用,而是显示了如何创建通用的内存字节数组。
private static byte[] DownloadFile(string url)
{
byte[] result = null;
using (WebClient webClient = new WebClient())
{
result = webClient.DownloadData(url);
}
return result;
}
于 2018-05-02T05:37:25.663 回答