VBScriptで.txtをブラウザに読み込むには?
[上に]
[前に]
[次に]
hiro
2000/03/08(水) 20:45:25
前ページより持ってきた数字をテキストファイル名とし
サーバに保存してあるtextファイルをブラウザ上に読み
込みたいのですが、”型が一致しません。: 'CreatObject'”
とエラーが出てしまいます。
解決方法をご存知の方はお願いします。
以下ソース
tdb=Request.QueryString("kigyocd")
tdb1=tdb & ".txt"
txpass="\\svtky02\gp_dat\Tdb\" & tdb1
Set fs=CreatObject("Scripting.FileSystemObject")
Set tdbobj=fs.OpenTextFile(" & txpass & ",1,True,0)
Document.Write tdbobj.ReadAll
tdbobj.Close
LEN
2000/03/09(木) 02:08:35
はじめまして。初参加です(^^;)
昔、VBScriptでASP書いていたので少しだけ。
例題ソース4行目の”CreatObject”が、綴りのミスかと思います。
正しくは”CreateObject”です。(”e”が抜けている)
ではでは、頑張ってください〜。
#単なる写しミスでしたらゴメンナサイ。
無責任官庁
2000/03/09(木) 08:45:19
> Set tdbobj=fs.OpenTextFile(" & txpass & ",1,True,0)
綴りもそうですけど、ちょっとこれも変ですね。
ダブルクォーテーション付けようとしてるのかもしれませんけど、
" & txpass & "←これではこういう文字列として解釈されて
しまいます。(&が文字列の連結じゃ無くなってしまってる)
Set tdbobj=fs.OpenTextFile(txpass,ForReading,False,TristateFalse)
こんな感じでいいんじゃないかと。
hiro
2000/03/09(木) 09:48:08
ありがとうございます。
少し進みましたが、下記のようなエラーで表示されません。
ファイルパスの確認は出来ていますが?
プロシージャの呼び出し、または引数が不正です。
宜しかったらこの対応を教えて下さい。
初級者
2000/03/09(木) 10:24:28
これに変えてみては?
Set fs=CreateObject("Scripting.FileSystemObject",ForReading)
Set tdbobj=fs.OpenTextFile(txpass,1,True,0)
無責任官庁
2000/03/09(木) 10:32:47
Set fs=CreateObject("Scripting.FileSystemObject")
If (fs.FileExists(txpass)) Then
Set tdbobj=fs.OpenTextFile(txpass)
data=tdbobj.ReadAll
Response.Write (data)
tdbobj.Close
Else
Response.write(txpass & " は、存在しません。")
End If
上記のようにファイルチェックも付けてやってみてください。
(あと気が付いたけどDocument.Write はJavaScriptなんでダメですね)
私もこれでテストしてみたんですが、ネットワークドライブに対しては、
普通にはアクセス出来ないような感じもしました。
ローカルドライブならば、ちゃんと動作します。
初級者
2000/03/09(木) 10:33:46
あと、
>Document.Write tdbobj.ReadAll
これだと改行が反映されないので
do until tdbobj.AtEndOfStream
Document.Write tdbobj.ReadLine & "<br>"
Loop
としたほうがいいとおもいます。
初級者
2000/03/09(木) 10:39:33
> (あと気が付いたけどDocument.Write はJavaScriptなんでダメですね)
htmlでは使えますよ(もちろんIEのみ)。
ASPだとResponse.Writeですが。
無責任官庁
2000/03/09(木) 10:56:45
サーバーサイドなのか、クライアントサイドなのか、
確認するの忘れてました。(^-^;
hiroさん、どちらなんでしょうか。
私はクライアントサイド VBS は、やった事無いので…
#仮にクライアントとした場合、それ使って絶対パスでファイル操作
#が出来ちゃうんです?
#いいんだろうか…っていうかそれ怖いね。
初級者
2000/03/09(木) 11:05:06
関係ない話ですが
> #仮にクライアントとした場合、それ使って絶対パスでファイル操作
> #が出来ちゃうんです?
> #いいんだろうか…っていうかそれ怖いね。
できてしまいます。
VBScriptのウィルスも存在するそうです。
(詳しいことはわかりませんが)
無責任官庁
2000/03/09(木) 12:06:40
先ほどマニュアルを見て確認しました。
以下はマイクロソフトの VBScript のマニュアルからの引用です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
クライアント側で FileSystemObject を使用すると、クライアント側の
ローカル ファイル システムに望ましくないアクセスを受ける可能性があります
〜中略〜
Internet Explorer の既定の設定では FileSystemObject オブジェクトを
クライアント側で使用することができません。これらの既定値を無効にすると、
ローカル システムのファイル システムに望ましくないアクセスを受け、
ファイル システムの整合性やデータそのものが失われたり、
さらに重大な障害が発生する恐れがあります。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
ということなので、タダでは使えないようです。
(出来るとしたら、それはまさしくセキュリティホールだね)
「自分だけ使えれば良い」という事ならば、それは問題無いかと。
初級者
2000/03/09(木) 12:52:52
>VBScriptのウィルスも存在するそうです。
これはどうやらHTMLメールのことみたいですね
詳しくはこちらに
http://www.internetclub.ne.jp/TECH/Ztoday/1999/991214.html
http://www.internetclub.ne.jp/TECH/Ztoday/1999/991215.html
話を戻しまして
Request.QueryStringを使用しているということはASPですか?
それでしたら、Document.WriteをResponse.Writeに変えてみてください。
hiro
2000/03/09(木) 17:00:49
無責任官庁さん、初級者さん、LENさんへ
活発なご意見大変感謝いたします。
現在取り組んでいる物は、イントラネットでDBはとりあえずMDBを使用しています。当然ASPです。まだまだ勉強不足で。
問題の部分は、単純にtextファイルのパスをリンクしてあげると、ブラウザ上で、textファイルがそのまま表示されます。しかしそれには戻るボタン等が付けられず、操作性を一貫させたく、HTML上に表示できれば
と考えた次第です。教えていただいた事は、すべて試しましたが、まだ解決は出来ていません。おっしゃるようにセキュリティ面では不安が残りますが。今後もよろしくお願いいたします。
無責任官庁
2000/03/10(金) 11:43:06
単純にテキストファイルの内容をHTMLに挿入するだけなら、
無理にASPで実現しようとしないで、SSIの
<!--#include file="file.txt"--> を使ってみたらどうでしょうか。
ASPとSSIは同居できますよ。
(この場合、VBSよりSSIの方が先に解釈されます)
あと、ASPの方の問題ですけども、テキストファイルはASPがあるサーバー
の中にあるんですよね?
ファイルのパスはフルパスで“c:\inetpub\wwwroot〜”のようにしないとダメですね。
[上に]
[前に]
[次に]