- PR -

ASPでファイルリンク集を自動更新

投稿者投稿内容
A
常連さん
会議室デビュー日: 2005/01/31
投稿数: 29
投稿日時: 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を入れると自動的に更新するようにしたいのですが、どのようなソースを追加したら良いでしょうか?
A
常連さん
会議室デビュー日: 2005/01/31
投稿数: 29
投稿日時: 2005-02-01 23:56
こんばんは。
上記質問を投稿したものですが、ここのBBSでASPのことを質問
するのは間違いだったでしょうか?どこのBBSが適切なんでしょうか?
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2005-02-02 01:35
普通のASPの質問をどこのBBSにすべきかは、確かに私も疑問です。

それにしても、質問内容がいまいちよくわかりません(特に2と3)

1は、aspが動く環境が今ないので試してませんが
Request.ServerVariables("URL")
でしたっけ? ただ、「e:\\web\doc」←これは絶対パス(物理パス)では?

2は、普通に<a>タグを書くのはだめですか?

3は、どこにあるボタンを誰が押すのですか?PWとIDをどこに入れるのですか?
(最新状態に更新、みたいなことをさせたいのかな、と想像はつくが)
A
常連さん
会議室デビュー日: 2005/01/31
投稿数: 29
投稿日時: 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を入れる
  感じです。

A
常連さん
会議室デビュー日: 2005/01/31
投稿数: 29
投稿日時: 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 これは難とか自分で出来そうです。
A
常連さん
会議室デビュー日: 2005/01/31
投稿数: 29
投稿日時: 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>
mays
常連さん
会議室デビュー日: 2004/01/17
投稿数: 22
投稿日時: 2005-02-02 19:03
ASPファイルが存在するディレクトリ内のファイルを
リンクとして列挙するサンプルを書いてみました。
コード:
<%
Dim objFSO
Dim objFOL

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFOL = objFSO.GetFolder(Server.MapPath("./"))
%>
<html>
<body>
<h1>TEST</h1>
<hr>
<% For Each objwk in objFOL.Files %>
	<a href="./<%= objWK.Name %>"><%= objWK.Name %></a><br>
<% Next %>
</body>
</html>
<%
Set objFOL = Nothing
Set objFSO = Nothing
%>

A
常連さん
会議室デビュー日: 2005/01/31
投稿数: 29
投稿日時: 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/"))
などとしてみましたが、リンクを張ることができませんでした。

スキルアップ/キャリアアップ(JOB@IT)