Скачать файл прямо в память
Я хотел бы загрузить файл Excel непосредственно с FTP-сайта в поток памяти. Затем я хочу открыть файл в элементе управления FarPoint Spread, используя метод OpenExcel (Stream). Моя проблема в том, что я не уверен, возможно ли загрузить файл непосредственно в память. Кто-нибудь знает, возможно ли это?
3 ответа
Да, вы можете загрузить файл с 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);
}
Посмотрите на WebClient.DownloadData. Вы должны иметь возможность загружать каталог файлов в память и не записывать его в файл первым.
Это не проверено, но что-то вроде:
var spreadSheetStream
= new MemoryStream(new WebClient().DownloadData(yourFilePath));
Я не знаком с FarPoint, хотя, чтобы сказать, может ли поток использоваться непосредственно с OpenExcel
метод. Онлайн примеры показывают метод, используемый с FileStream
, но я бы предположил, что любой Stream
будет принято.
Скачать файл с URL в память.Мой ответ не совсем показывает, как загрузить файл для использования в Excel, но показывает, как создать байтовый массив общего назначения в памяти.
private static byte[] DownloadFile(string url)
{
byte[] result = null;
using (WebClient webClient = new WebClient())
{
result = webClient.DownloadData(url);
}
return result;
}