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〜”のようにしないとダメですね。

[上に] [前に] [次に]