Подтвердить что ты не робот

Скачать файл непосредственно в память

Я хотел бы загрузить файл excel непосредственно с ftp-сайта в поток памяти. Затем я хочу открыть файл в элементе управления FarPoint Spread, используя метод OpenExcel (Stream). Моя проблема в том, что я не уверен, можно ли загрузить файл непосредственно в память. Кто-нибудь знает, возможно ли это?

4b9b3361

Ответ 1

Да, вы можете загрузить файл с FTP в память.

Я думаю, вы даже можете передать Stream с 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);
}

Ответ 2

Взгляните на WebClient.DownloadData. Вы должны иметь возможность загружать каталог файлов в память и не записывать его в файл в первую очередь.

Это не проверено, но что-то вроде:

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

Я не знаком с FarPoint, хотя, чтобы сказать, может ли поток напрямую использоваться с методом OpenExcel. Примеры в Интернете показывают метод, используемый с FileStream, но я предполагаю, что любой тип Stream будет принят.