js 读文件 相对路径

capcom923 2008-04-09 09:59:01
function GetEverything()
{
var fso, f;
var ForReading = 1, ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
f.Write("Header");
f.Write("1234567890987654321");
f.Close();
f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
alert(f.ReadAll());
}
如上,如果文件路径写成"c:\\testfile.txt"这样的绝对路径,就可以正常打开,但写成"testfile.txt"相对路径就说文件找不到,这个txt文件就是和我的页面在同一目录下的,怎么就说文件未找到呢?
很是奇怪,如果在本机运行页面还好,因为可以用window.location找到绝对路径,在进行一些/\的转换,就可以正常打开文件。
但是要做到服务器上,再取window.location就变为http://localhost:80/testfile.txt这样的地址,这个再怎么转换/\也不能正常打开文件了。

请求各路仙人帮忙解决如何以相对路径打开文件?
...全文
1924 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
编程答疑 2009-04-04
  • 打赏
  • 举报
回复
我也遇到你类似的问题,好想不好弄,建议搞个临时目录吧
如:
f = fso.CreateTextFile("c:\\temp\\testfile.txt", ForWriting, true);
fxs_2008 2008-04-09
  • 打赏
  • 举报
回复
fso好象只能操作本地的
有的网页能打开网页文件并取原码

这里最好用ajax,用xmlhttp组件
浴火_凤凰 2008-04-09
  • 打赏
  • 举报
回复
很难判断客户端磁盘情况.
capcom923 2008-04-09
  • 打赏
  • 举报
回复
能不能大致讲一下,如何使用ajax读服务器文件,本人不是很熟,谢谢
No_Data_Found 2008-04-09
  • 打赏
  • 举报
回复
所以才想要用绝对路径找到服务器的txt文件

客户端fso读取的是客户端文件

读取服务器文件请使用 ajax
yifuzhiming 2008-04-09
  • 打赏
  • 举报
回复
没这样做过,感觉js读写文件不保险
capcom923 2008-04-09
  • 打赏
  • 举报
回复
是啊,就因为不知道客户端的磁盘情况,所以才想要用绝对路径找到服务器的txt文件,就是要让所有的客户端都修改服务器端的txt文件,有办法么?
No_Data_Found 2008-04-09
  • 打赏
  • 举报
回复
你上面的代码 是客户端脚本

运行情况根据客户端不同而不同

很难判断客户端磁盘情况 不建议这样读写操作
capcom923 2008-04-09
  • 打赏
  • 举报
回复
谢谢你的代码,正在读,很感动,但我是想只用html和js脚本,应该如何是好呢
No_Data_Found 2008-04-09
  • 打赏
  • 举报
回复
不知道你的具体用途 也可以考虑服务器端fso

<%
function ReadFile(filename)
on error resume next
err.clear
'ASP的一种校错方法
Const ForReading = 2
Const Create = false
Dim FSO
DIM TS
DIM filepath
DIM thefile
Dim content

'---------------操作地址

Set FSO=server.createobject("scripting.filesystemobject")
filepath=server.MapPath("temp") ./记录本存放的文件夹

if err.number<>0 then
response.Write "目录不存在"
response.End
end if

'filename="test.txt" ---------test.txt为你从数据库里读出的文件名
thefile=filepath&"/"&filename
Set TS = FSO.OpenTextFile(thefile,1)

do until Ts.AtEndOfStream
Response.Write (""&TS.ReadLine&"")
response.write("<br>")
loop

Set TS = Nothing
Set FSO = Nothing
end function
%>

<%
dim id
dim filename
id=6
Set rs=Server.CreateObject("ADODB.Recordset")
sql="select * from yuan where id="&id
rs.open sql,cn,1,1
filename=rs("fileload")
%>

<% readfile(filename) %>

No_Data_Found 2008-04-09
  • 打赏
  • 举报
回复
关键是你用的是客户端控件 不能读取服务器文件

关于ajax的参考资料

http://baike.baidu.com/view/1641.htm

capcom923 2008-04-09
  • 打赏
  • 举报
回复
谁能大致给我讲一下啊,怎么用ajax啊,我已经踌躇满志了
而且谁能告诉我,Scripting.FileSystemObject的打开文件函数,功能描述是说可以用相对路径的,可为什么就不行呢?我换了两台机器试也都不行

87,922

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧