我想直接从ftp站点将excel文件加载到内存流中。然后我想使用OpenExcel(Stream)方法在FarPoint Spread控件中打开该文件。我的问题是我不确定是否可以将文件直接下载到内存中。有人知道这是否可行?
答案 0 :(得分:30)
是的,您可以将文件从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);
}
答案 1 :(得分:18)
看看WebClient.DownloadData。您应该能够将文件目录下载到内存中,而不是先将其写入文件。
这是未经测试的,但类似于:
var spreadSheetStream
= new MemoryStream(new WebClient().DownloadData(yourFilePath));
我不熟悉FarPoint,说明该流是否可以直接与OpenExcel
方法一起使用。 Online examples显示与FileStream
一起使用的方法,但我认为会接受任何类型的Stream
。
答案 2 :(得分:0)
将文件从URL下载到内存。 我的答案并未完全显示,如何下载文件以便在Excel中使用,但展示了如何创建通用内存字节数组。
private static byte[] DownloadFile(string url)
{
byte[] result = null;
using (WebClient webClient = new WebClient())
{
result = webClient.DownloadData(url);
}
return result;
}