我想直接从一个ftp站点将excel文件加载到内存流中。然后,我想使用OpenExcel(Stream)方法在FarPoint Spread控件中打开文件。我的问题是我不确定是否可以直接将文件下载到内存中。任何人都知道这是可能的吗?将文件直接下载到内存中
回答
是的,你可以从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);
}
我们确定'WebResponse.GetResponseStream'不会将数据推入临时文件并返回'FileStream'或类似的东西吗? –
它甚至没有开始下载任何东西,直到你开始阅读流。我确信这一点,因为如果你不继续阅读一段时间的服务器超时。请参阅:http://msdn.microsoft.com/en-us/library/system.net.webresponse.getresponsestream(v=vs.110).aspx –
这两个回复工作非常漂亮!谢谢! – daved
看看WebClient.DownloadData。您应该能够将文件目录下载到内存中,而不是先将它写入文件。
这是未经测试,但这样的:
var spreadSheetStream
= new MemoryStream(new WebClient().DownloadData(yourFilePath));
我不熟悉的公司Farpoint虽然说是否不流可以直接与OpenExcel
方法一起使用。 Online examples显示方法与FileStream
一起使用,但我认为任何种类的Stream
将被接受。
找到这个对我有用。我试图从一个网站下载一个.zip文件,但使用新的WebClient()。OpenRead(文件)来获取流,但得到“流不支持查找操作”错误。不知道为什么这一个工作,但我很感激它:) – tehAon
- 1. 将文件下载到内存中
- 2. php - 直接下载csv文件到内存,最好不用cURL
- 3. Java - 从SFTP直接下载到内存而不写入文件
- 4. 如何直接将文件上传到云存储从直接下载链接
- 5. 如何将s3对象直接下载到java的内存中
- 6. 直接下载链接到OneDrive文件?
- 7. 如何将内存下载到文件?
- 8. 直接下载CSV文件到用户下载文件夹
- 9. 直接下载文件(pdf)
- 10. 直接下载文件到S3
- 11. 将下载apk文件下载到内部存储器
- 12. 下载文件并保存到内存
- 13. 如何在android webview中直接下载链接下载文件
- 14. 将xml文件加载到内存中
- 15. 避免直接下载文件链接
- 16. 将文件直接写入TcpClient而不将其存储到内存中
- 17. 如何将文件直接下载到iPhone OS上的磁盘?
- 18. 将远程文件直接下载到客户端?
- 19. Flex:直接将文件下载到磁盘
- 20. 如何将blob文件下载到内存流中?
- 21. 直接下载文件vs读取文件作为下载
- 22. 将图像直接下载到相册
- 23. 直接文件下载保护
- 24. 如何阻止直接下载文件
- 25. DENY使用php直接下载文件
- 26. 使用chromedriver直接下载PDF文件
- 27. 下载文本直接
- 28. Perl大的下载直接到文件(以避免RAM过载)
- 29. 将下载的文件存储在内存中
- 30. 选择文件夹后下载文件不是直接到PHP中的下载文件夹中
是;只是使用流。 – SLaks
好的,我可以将文件从ftp网址链接直接加载到流实例中?或者我需要先将文件下载到用户的机器上?如果可能的话,我更喜欢前者。 – daved