0

我有一个名为 tblfiles 的表,其中包含列

id             int

Name           varchar(50)    
ContentType    varchar(50)    
Data           varbinary(MAX)

id 是递增的,name 是上传文件的名称,Content type 告诉上传文件的类型,例如“application/PDF”或“application/ms-word”等...... data 是二进制文件的位置正在存储数据。

我已经设法将数据上传到数据库中。

我添加了一个 gridview 来显示自动绑定的数据(你不知道手动,这只是从 tblfiles 中选择全部)我想要一个显示下载超链接或按钮来下载文件的列。

请记住,所有数据都存储在数据库而不是文件夹中!!

那么我该怎么做呢?

4

3 回答 3

1

尝试创建 Grid 事件OnRowDataBound方法来创建引用数据库中文件的链接。

您可以将常规链接与文件的 href 一起使用,也可以为网格创建按钮。如果您创建按钮,您还应该为 Grid 创建方法RowCommand

检查这些链接:

http://www.dotnetgallery.com/kb/resource17-RowDatabound-event-tips-and-tricks-in-Gridview-control.aspx

如何在 RowDataBound 事件的 Gridview 中更改 Eval() 字段的值

于 2013-10-23T20:32:40.870 回答
0

你可以有一个文件页面

例如:www.website.com/download.aspx?id=12

然后,您需要更改 http 标头以说明它是一个要下载该文件数据的文件。

Response.AddHeader("Content-disposition", "attachment; filename=" & filename)
Response.ContentType = "application/PDF"
Response.BinaryWrite(binaryData)
Response.End()

另一种选择可能是创建一个临时文件。

于 2013-08-20T13:02:26.370 回答
0

您需要添加一个执行方法的链接(具有超链接列或包含超链接的模板列)。该链接应该执行一个方法,该方法执行以下操作:

  1. 在内存中加载相应的二进制数据
  2. 使用 Response.BinayWrite 将二进制流写入响应。

确保响应对象的 contentType 设置为“application/octet-stream”(查找正确的拼写,不确定) 确保响应对象具有以下标头:“Content-disposition”、“附件:文件名” =

于 2013-08-20T13:06:38.370 回答