- - PR -
ASPでファイルリンク集を自動更新
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-01-31 21:46
こんにちは
ASPでASPソースファイルがあるカレントディレクトリ直下にあるDOCホルダ内のファイル の名称とリンクアドレスを自動更新したいと考えています。 以下のコードまではかけるのですが、その先がわかりませんので、ご教授お願いします。 <%@Language="VBScript" %> <html> <head> <title>ファイル情報の表示</title> </head> <body> <h1>ファイル情報一覧</h1> <table border="1"> <tr> <th>ファイル名</th><th>リンク先</th> </tr> <% Set objShl=Server.CreateObject("Shell.Application") Set objFld=objShl.NameSpace(Server.MapPath("./doc")) Set clnFls=objFld.Items For Each objFl In clnFls %> <tr> <td nowrap><%=objFl.Name %></td> <td nowrap><%= Server.Mappath(objFl) %></td> </tr> <% Next %> </table> </body> </html> 1.Server.Mappath(objFl) では、e:\\web\doc のように相対パス?が返されます。これをhttp:// で表示したいのですが、どのようにソースを書いたら良いのでしょうか? 2. 1 で返されたhttp:// にリンクを張り、リンクアドレスをウェブ上に表示したいのですが、どのようにソースを書いたら良いでしょうか? 3. 上記全体のソースを起動させるために、ボタンを押して、PWとIDを入れると自動的に更新するようにしたいのですが、どのようなソースを追加したら良いでしょうか? | ||||
|
投稿日時: 2005-02-01 23:56
こんばんは。
上記質問を投稿したものですが、ここのBBSでASPのことを質問 するのは間違いだったでしょうか?どこのBBSが適切なんでしょうか? | ||||
|
投稿日時: 2005-02-02 01:35
普通のASPの質問をどこのBBSにすべきかは、確かに私も疑問です。
それにしても、質問内容がいまいちよくわかりません(特に2と3) 1は、aspが動く環境が今ないので試してませんが Request.ServerVariables("URL") でしたっけ? ただ、「e:\\web\doc」←これは絶対パス(物理パス)では? 2は、普通に<a>タグを書くのはだめですか? 3は、どこにあるボタンを誰が押すのですか?PWとIDをどこに入れるのですか? (最新状態に更新、みたいなことをさせたいのかな、と想像はつくが) | ||||
|
投稿日時: 2005-02-02 09:13
べるさん、こんにちは。
>1は、aspが動く環境が今ないので試してませんが >Request.ServerVariables("URL") >でしたっけ? ただ、「e:\\web\doc」←これは絶対パス(物理パス)では? すみません、いろいろ調べた結果【仮想パス】と分かりました。http:// で始まるパス です。これはServerVariablesで取得できるんですね。 ちょっとやってみます。 2は、普通に<a>タグを書くのはだめですか? <td nowrap><document.location.href = ><%=Server.MapPath("./doc/")%></td> と思ったんですが、これでもリンクを張れませんでした。どう修正すべきでしょうか? <a> という意味がよくわかっていません。申し訳ありません。 3は、どこにあるボタンを誰が押すのですか?PWとIDをどこに入れるのですか? どこにあるとまでは考えていませんでしたが、例えばフレームを左右にわけ、右側は リンク先を表示し、左側にはPWとIDを入れるボックスを設けて、そこにPW、IDを入れる 感じです。 | ||||
|
投稿日時: 2005-02-02 14:33
こんにちは。
説明が分かりづらいかもしれませんので、もう一度説明します。 仮想パス http://www/abc/test/doc/ 相対パス e:\test\doc\ 絶対パス gflie\test\doc\ 上記のようなパスでASPを起動させたいと考えています。 相対パス(e:\test\doc\)内に幾つかのEXCELファイルを置き、そのEXCELファイルまでの仮想パスをInternet Explorer上に表示し、且つその表示されたパスをクリックすることによりDocフォルダ内のEXCELファイルを起動させたいと考えています。 但し、上記相対、絶対パスはあくまでもtest環境でDocホルダを保存する親パスは変更になる可能性があります。 そこで、以下のようにserver.mappathでdocホルダーを指定しておくことにより、その前の親パスが変更(環境が変わっても)されても対応できると考えました。しかし下記ソースでは【相対パス】しか取得できません。Request.servervariables を使用しても同じでした。 <%@Language="VBScript" %> <html> <head> <title>ドキュメント情報の表示</title> </head> <body> <h1>便利ツールリンク先一覧</h1> <table border="1"> <tr> <th>ファイル名</th><th>リンク先</th><th>リンク</th> </tr> <% Set objShl=Server.CreateObject("Shell.Application") Set objFld=objShl.NameSpace(Server.MapPath("./doc/")) Set clnFls=objFld.Items For Each objFl In clnFls %> <tr> <td nowrap><%=objFl.Name %></td> <td nowrap><%= Server.Mappath(objFl) %></td> <td nowrap><document.location.href = ><%=server.mappath("./doc/")%></td> </tr> <% Next %> </table> </body> </html> そこで 1.Server.Mappath(objFl) では、e:\\web\doc のように相対パス?が返され、Explorer上でもe:\\web\doc のままです。これをhttp:// で表示したいのですが、どのようにソースを書いたら良いのでしょうか? 2. 1 で返されたhttp:// にリンクを張り、リンクアドレスをウェブ上に表示したいのですが、どのようにソースを書いたら良いでしょうか? 3 これは難とか自分で出来そうです。 | ||||
|
投稿日時: 2005-02-02 17:52
紆余曲折して、以下までたどり着き、リンクまで張りました。
しかし、リンク先が開きません。 どうしてか?それは、下記のような"\(円マーク)"が付いたパスしか取得できていないからのようです。 e:\webroot\test\doc 1.Server.Mappath(objFl) では、e:\\web\doc のように相対パス?が返されます。これをhttp:// で表示したいのですが、どのようにソースを書いたら良いのでしょうか? ↑ これって如何すれば良いでしょうか? <%@LANGUAGE=VBScript%> <html> <head> <title>ディレクトリ内のファイル一覧表示 FileSystemObjectの.GetFolder</title> </head> <body> <% Set objFS = Server.CreateObject("Scripting.FileSystemObject") strFDIRNAME = Server.MapPath(".") 'フォルダー名取得 Response.Write strFDIRNAME & "のファイル一覧です<br>" & vbCRLF '*3 .GetFolderで、フォルダーオブジェクトを取得します Set objDIR = objFS.GetFolder(strFDIRNAME) 'A = server.mappath(request.servervariables("PATH_INFO")) For Each objFILE In objDIR.Files strFNAME = objFILE.Name If Right(strFNAME, 4) = ".xls" Then Response.Write "<a href='" & strFDIRNAME & "/" & strFNAME & "'>" Response.Write strFNAME & "</a>" & vbTab End If Response.Write "<br>" & vbCRLF Next %> <hr> </body> </html> | ||||
|
投稿日時: 2005-02-02 19:03
ASPファイルが存在するディレクトリ内のファイルを
リンクとして列挙するサンプルを書いてみました。
| ||||
|
投稿日時: 2005-02-03 00:35
こんばんは、maysさん
ご参考ありがとうございます。 さて、ご紹介いただいたソースの下記コードでは、ASPファイルが存在する フォルダと同じ層にあるファイルが取得できました。 Set objFOL = objFSO.GetFolder(Server.MapPath("./")) 例えば、相対パス \\abc\def にご紹介頂いたソース(仮名:test.asp)をおくとします。このときのパスは\\abc\def\test.asp となります。 同じ層にdoc というフォルダーを置いてこの中に置いたファイルをASPで返したいときは どうしたら良いのでしょうか? 要は、\\abc\def\doc\ 内にあるファイルを返したと思っています。その際にtest.aspは \\abc\def 内にそのまま置くことにします。 Set objFOL = objFSO.GetFolder(Server.MapPath(".doc/")) などとしてみましたが、リンクを張ることができませんでした。 | ||||
