2012-02-21 111 views
1

我有一些代码,下载从位于这里的互联网文件:参考本地文件,而不是一个远程文件

http://www.amsat.org/amsat/ftp/keps/current/nasa.all

,并以确定卫星的位置上执行某些计算。由于似乎阻止该文件被下载的服务器问题,我想将该文件移动到本地计算机并从那里引用它。

我知道javascript无法读取.txt文件而没有涉及ActiveX组件,但是如果我更改变量URL以引用该文件,它会以同样的方式工作吗?我尝试将文件保存为.txt,.all和.xml文件,程序失败。我究竟做错了什么?

获取原始文件的代码如下,其显示的URL位于上方。

function getOrbitalElements() 
{ 
TLE_Line1=""; 
TLE_Line2=""; 

pgTXT = ""; 

xmlhttp = null; 

if (window.XMLHttpRequest) 
{ 
    xmlhttp = new XMLHttpRequest(); 
} 
else if (window.ActiveXObject) 
{ 
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 

if(xmlhttp != null) 
{ 
    xmlhttp.onreadystatechange = stateChange; 
    xmlhttp.open("GET",url,true); 
    xmlhttp.send(null); 
} 
} 

最后我搬到文件到同一文件夹中的HTML文件,并在文件名称中删除任何空格,看它是否有差别。似乎没有任何工作 - 任何人有任何想法?

回答

2

使用File API

使用加入到HTML5的DOM文件API,它现在可能 网页内容要求用户选择本地文件,然后读取这些文件的内容 。这个选择可以通过使用一个 HTML输入元素或通过拖放来完成。

+0

谢谢 - 我将在未来的同一个程序中使用FileAPI – Katana24 2012-02-21 20:38:30

1

是Amsat.org一个网站由您控制?如果是这样的话,你应该将textfile作为对javascript比texttext(可能是JSON)更有意义的东西。

如果你不控制域名,通过ajax下载文件可能是不可能的。在这种情况下,您可以使用您的服务器下载该文件(例如,在php中使用fopen或以您的服务器端语言使用相应的功能),然后将其提供给客户端。在此之前,您应该检查与网站所有者这样做的权利。

+0

为输入而欢呼。不,我不控制Amsat。上面的答案将在未来证明是有用的,但我确实解决了我的问题 - 我基本上将必要的文件捕获为文本文件并将扩展名更改为.all。这是程序其余部分工作所必需的。然后我把它放在与主html文件相同的文件夹中,它工作:P – Katana24 2012-02-21 20:35:51