web-dev-qa-db-ja.com

ファイルをメモリに直接ダウンロードする

ExcelファイルをFTPサイトからメモリストリームに直接ロードしたいと思います。次に、OpenExcel(Stream)メソッドを使用して、FarPoint Spreadコントロールでファイルを開きます。私の問題は、ファイルをメモリに直接ダウンロードできるかどうかわからないことです。これが可能かどうか誰でも知っていますか?

17
daved

はい、FTPからメモリにファイルをダウンロードできます。

FTPサーバーからストリームを渡して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);
}
32
Attila

WebClient.DownloadData をご覧ください。ファイルディレクトリをメモリにダウンロードし、最初にファイルに書き込むことはできません。

これはテストされていませんが、次のようなものです:

var spreadSheetStream
    = new MemoryStream(new WebClient().DownloadData(yourFilePath));

ただし、ストリームをOpenExcelメソッドで直接使用できるかどうかを言うために、FarPointには詳しくありません。 オンラインの例FileStreamで使用されているメソッドを表示しますが、あらゆる種類のStreamが受け入れられると仮定します。

18
Grant

URLからメモリにファイルをダウンロードします。 私の答えは、Excelで使用するファイルをダウンロードする方法を正確には示していませんが、汎用のインメモリバイト配列を作成する方法を示しています。

    private static byte[] DownloadFile(string url)
    {
        byte[] result = null;

        using (WebClient webClient = new WebClient())
        {
            result = webClient.DownloadData(url);
        }

        return result;
    }
0