我有一个名为tblfiles的表,其中包含列
id int
Name varchar(50)
ContentType varchar(50)
Data varbinary(MAX)
id是incremental,name是要上传的文件的名称,Content type告诉正在上传的文件的类型,例如“application / PDF”或“application / ms-word”等......数据是二进制数据存储的位置。
我已设法将数据上传到数据库中。
我添加了一个gridview来显示自动绑定的数据(你不知道手动哪个只是来自tblfiles的所有)我想要一个列,它将显示一个下载超链接或按钮来下载文件。
记住所有数据都存储在数据库而不是文件夹!!
那我怎么能这样做?
答案 0 :(得分:1)
尝试创建Grid事件OnRowDataBound
方法,以创建从数据库引用该文件的链接。
您可以使用常规链接和文件的href,也可以为网格创建按钮。如果您创建按钮,还应该为网格RowCommand
创建方法。
检查以下链接:
How to change in a Gridview on RowDataBound event the value of an Eval() field
答案 1 :(得分: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()
另一个选项可能是创建一个临时文件。
答案 2 :(得分:0)
您需要添加一个执行方法的链接(具有超链接列或包含超链接的模板化列)。该链接应该执行一个方法,它沿着这些方向做某事:
确保响应对象的contentType设置为“application / octet-stream”(查找正确的拼写,不确定) 确保响应对象具有以下标题:“Content-disposition”,“attachment:filename =