我现在正在开展一个项目,我需要从远程服务器上的文件中读取标题数据。我正在谈论许多大文件,所以我无法读取整个文件,只是我需要的标题数据。
我唯一的解决方案是使用保险丝安装远程服务器,然后从文件中读取标头,就好像它们在我的本地计算机上一样。我试过了,它的确有效。但它有一些缺点。特别是使用FTP:
保险丝是一种解决方案,但我不太喜欢它,因为我觉得我不相信它。所以我的问题基本上是否有任何其他问题的解决方案。语言最好是Ruby,但如果Ruby不支持该解决方案,任何其他语言都可以使用。
谢谢!
答案 0 :(得分:1)
您在寻找什么类型的信息?
您可以尝试使用ruby的open-uri模块。 以下示例来自http://www.ruby-doc.org/stdlib/libdoc/open-uri/rdoc/index.html
require 'open-uri'
open("http://www.ruby-lang.org/en") {|f|
p f.base_uri # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>
p f.content_type # "text/html"
p f.charset # "iso-8859-1"
p f.content_encoding # []
p f.last_modified # Thu Dec 05 02:45:02 UTC 2002
}
编辑:似乎操作系统想要从远程文件中检索ID3标记信息。这更复杂。
来自wiki: 这似乎是一个难题。
在维基上:
标记文件中的位置
只有ID3v2.4标准才有 可以将标签数据放在 文件的结尾,与...相同 ID3v1的。 ID3v2.2和2.3要求 标签数据在文件之前。同时 对于流数据,这绝对是 必需的,对于静态数据来说意味着 整个音频文件必须是 更新以在前面插入数据 文件。用于初始标记 每个文件都会受到很大的惩罚 必须重写。标签作者是 鼓励在之后引入填充 标签数据以便允许 没有编辑标签数据 需要整个音频文件 重写,但这些都不是标准的 标签要求可能会有所不同 非常,特别是如果APIC (相关图片)也是 嵌入
这意味着根据文件的ID3标签版本,您可能必须阅读文件的不同部分。
这篇文章概述了使用ruby为ID3tagv1.1读取ID3标签的基础知识,但服务器应该是一个很好的起点:http://rubyquiz.com/quiz136.html
您还可以考虑使用ID3解析库,例如id3.rb或id3lib-ruby;但是,我不确定是否支持解析远程文件的能力(最有可能通过一些修改)。
答案 1 :(得分:0)
有人提出了RANG
command的建议,该建议只允许检索文件的一部分(此处是前几个字节)。
但是,我没有发现包含此建议或实施的任何参考。
因此,对于特定服务器,测试(或检查FTP服务器的文档)可能会很有用-并在可用时使用它。
答案 2 :(得分:0)
“最好的”解决方案是开始传输,并在下载的文件超过字节时停止传输。由于没有太多(如果有的话)库会允许连接中断,因此它更复杂,可能需要您手动编写一个特定的ftp客户端代码,它有两个线程,一个线程进行FTP连接和传输,另一个线程监视大小下载的文件并杀死第一个线程。
或者至少可以并行化文件传输。这样您就不必等待所有文件都被完全传输来分析文件的开始。转移将继续