没有asp控件的下载文件

时间:2017-09-11 18:00:48

标签: asp.net vb.net

我继承了一个vb.net网站,我正在尝试添加一个允许从服务器下载.pdf文件的页面。

这是我最初的尝试: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菜鸟,所以请在答案中尽可能具体。

这个问题 Reading a binary file and using Response.BinaryWrite()  不回答我的问题,因为它是代码片段而不是整个文件。我对vb.net太新了,无法将这些片段放在一个文件中并进行调试。

1 个答案:

答案 0 :(得分: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)而不是Page,您也可以(小)提升性能。