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