0

私はウェブサイトプログラミングのバックグラウンドがほとんどないので、これが明白な質問である可能性がある場合はお詫び申し上げます。

ASPを使用してWebサイトの一部のページを更新しています。特定のページに、人々がダウンロードできるpdfファイルのリストがあります。現在、ファイルのタイトルは、ページへのリンクとともにページに直接書き込まれています。

myPage.asp    
<tr>
<td>Title</td>
<td><a href="something.pdf">PDF</a></td>
</tr>

たとえば、すべてのタイトルとファイル名を1つのテーブルにまとめたいと思いました。

FileCode   Title    Filename
001        ABC      abcfile.pdf
002        XYZ      xyz.pdf

そのため、ページにデータを入力するときに、次のようなものを使用できます。

<tr>
<td>Table(code).Title</td>
<td><a href=Table(code).Filename>PDF</a></td>
</tr>

コードはそのように見える必要はありません(私はそれがどのように見えるかわかりません)。これは、私が何を意味するかを示すための単なる例です。すべてのファイル情報を1つの場所に保持できるようにしたいので、更新や追加が簡単で、情報を表示する必要があるときに参照できます。 。

私がこれを行っている理由は、ユーザーがpdfリンクを直接クリックしてファイルを取得できるようにしたくないためです。彼らはファイルを取得するために連絡フォームを通過する必要があり、実際のファイル名の代わりにファイルコードを送信する方が簡単かもしれないと思いました。

<a href="contactForm.asp?code=001">PDF</a>

したがって、このテーブルにはcontactForm.aspからもアクセスできます。したがって、私はそのようなテーブルの中央の場所が欲しかったのですが、Webサイトで受け入れられる規則が何であるかわかりませんでした。

4

1 に答える 1

0

最も簡単な解決策は、次のように、ファイルをASPインクルードファイルの配列に格納することです。

files.asp

<%
Dim files(2, 2)
files(0, 0) = "1"
files(1, 0) = "File title 1"
files(2, 0) = "file1.txt"
files(0, 1) = "2"
files(1, 1) = "File title 2"
files(2, 1) = "file2.txt"
files(0, 2) = "3"
files(1, 2) = "File title 3"
files(2, 2) = "file3.txt"
%>

(ファイルがフォルダー内にある場合は、パスを追加します(例: "/ folder / file1.txt"))。

ファイルのリストを表示するには、次のコードを使用できます。

showfiles.asp

<!--#include file="files.asp"-->
<table>
<tr>
<td>FileCode</td>
<td>Title</td>
<td>Filename</td>
</tr>
<% Dim i : For i = 0 To UBound(files, 2) %>
<tr>
<td><%= files(0, i) %></td>
<td><%= files(1, i) %></td>
<td><%= files(2, i) %></td>
</tr>
<% Next %>
</table>

また、ファイルをブラウザに送信するには、次のいずれかの方法を使用できます。1つ目はファイルへの単純なリダイレクトであり、2つ目は実際にファイルをロードしてブラウザに書き込むため、ユーザーはファイルへのパスを認識できません(より安全ですがあまり安全ではありません)。

contact.asp

<!--#include file="files.asp"-->
<%
Dim code, file, i
code = Request.QueryString("code")
For i = 0 To UBound(files, 2)
    If files(0, i) = code Then
        file = files(2, i)
        Exit For
    End If
Next
If file <> "" Then
    Response.Redirect(file)
Else
    Response.Write("File not found")
End If
%>

contact2.asp

<!--#include file="files.asp"-->
<%
Dim code, file, i, stream
code = Request.QueryString("code")
For i = 0 To UBound(files, 2)
    If files(0, i) = code Then
        file = files(2, i)
        Exit For
    End If
Next
If file <> "" Then
    Set stream = Server.CreateObject("ADODB.Stream") 
    stream.Open 
    stream.Type = 1
    stream.LoadFromFile(Server.MapPath(file))
    Response.BinaryWrite(stream.Read) 
Else
    Response.Write("File not found")
End If
%>

うまくいけば、あなたはあなたが必要なものを作るためにこれのいくつかを使うことができますか?

于 2012-09-04T23:02:18.633 に答える