2017-09-11 119 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」」 –