直接将文件下载到内存中

时间:2013-10-30 15:13:02

标签: c# winforms visual-studio-2012 farpoint-spread

我想直接从ftp站点将excel文件加载到内存流中。然后我想使用OpenExcel(Stream)方法在FarPoint Spread控件中打开该文件。我的问题是我不确定是否可以将文件直接下载到内存中。有人知道这是否可行?

3 个答案:

答案 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;
    }