2017-09-11 168 views
-2

我继承了一个vb.net网站,并且试图添加一个允许从服务器下载.pdf文件的页面。没有asp控件的下载文件

这是我最初的尝试:Clickable Link Not appearing on page from generated anchor tag它失败了,因为我正在用runat="server"在JavaScript中生成锚定标记。
我现在明白为什么这不起作用。

所以,我的问题已更改为: 如果我有一个简单的锚标记是这样的:

<a href='download.aspx?type=inspection&file=NNNNNN.pdf'>Download NNNNNN.pdf</a>` 

是什么download.aspx和download.aspx.vb是什么样子?

我是否需要更改IIS中的任何内容以使其知道这是一个有效的URL?

我问这个问题如何做到这一点没有ASP控件,因为我在网上找到的例子都依赖于ASP控件。

我是一个Windows/IIS/vb.net noob所以请尽可能具体,你可以在答案。

这个问题 Reading a binary file and using Response.BinaryWrite() 不回答我的问题,因为它是代码段而不是整个文件。我对vb.net太陌生了,有信心将这些片段放在一起并将其调试。

+0

什么是不工作?我不清楚你卡在哪里。您在这里展示的所有内容都是指向网址的链接。您是否在该网址上实施了该网页?失败了吗? – David

+0

看看https://stackoverflow.com/q/1300729/656243 –

+0

PDF文件存储在服务器上的位置是什么?在数据库中,还是在Web服务器的文件系统上? PDF文件是一个“静态”文档(即完全在网站管理员的控制之下),还是可以由网络用户上传的文件? –

回答

2

download.aspx ...是什么样子的?

这可能是download.aspx文件的全部内容:

<%@ Page Language="VB" AutoEventWireup="true" CodeFile="download.vb" %> 

是什么?download.vb样子?

事情是这样的:

Imports System; 
Imports System.Web; 

Public Partial Class Download Inherits System.Web.UI.Page 

    Protected Sub Page_Load(sender As Object sender, e As EventArgs) 
     Response.Clear() 
     Response.ClearHeaders() 
     Response.ClearContent() 

     Response.AddHeader("Content-Disposition", "attachment; filename=YourFileNameHere") 
     Response.ContentType = "content type here (ie: application/x-pdf)"; 

     'Load and write the file data to the Response stream here 

     Response.End();  
    End Sub 
End Class 

您也可以通过使用一个HttpHandler(* .ashx的),得到一个(小)提升性能,而不是页面。

+0

这里是a)将“Class Download”更改为“Class MY_PATH_Download”,b)将“CodeFile =”download.vb“”更改为“CodeFile =”Download.aspx.vb“Inherits = “MY_PATH_Download”” –