0

我在网站编程方面的背景很少,所以如果这可能是一个明显的问题,我深表歉意。

我正在使用 ASP 更新网站上的一些页面。在特定页面上,我有一个人们可以下载的 pdf 文件列表。目前,文件的标题与指向它的链接一起直接写入页面

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

我想将所有标题和文件名收集到一个表中,例如:

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>

代码不必看起来像那样(我不知道它会是什么样子);这只是一个例子来说明我的意思:我希望能够将所有文件信息保存在一个位置,以便轻松更新和添加内容,并且我可以在需要显示一些信息时引用它.

我这样做的原因是因为我不希望用户能够直接单击 pdf 链接并获取文件;他们必须通过联系表格来获取文件,我认为只发送文件代码而不是实际的文件名可能更容易,

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

因此,contactForm.asp 也将访问此表。因此,我想要这样一张桌子的中心位置,但我不知道网站可接受的约定是什么。

4

1 回答 1

0

最简单的解决方案是将文件存储在 ASP 包含文件中的数组中,如下所示:

文件.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”)

要显示文件列表,您可以使用以下代码:

显示文件.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>

要将文件发送到浏览器,您可以使用以下方法之一。第一个只是简单的重定向到文件,第二个实际加载文件并将文件写入浏览器,使用户不知道文件的路径(更安全但不是很安全):

联系人.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
%>

联系人2.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 回答