【发布时间】:2016-01-08 21:17:39
【问题描述】:
我有一个启用了文件流的 SQL Server 表。我可以在这里上传文件并进行更新。如何将这些文件读入 .aspx 网页?这些文件是.pdf 文件。
每行有 2 个文件关联。
我正在将该行读入一个 .aspx 页面,并且在底部我希望文件在另一个下方打开。这是为了让用户打印文件所在的行。
我查看了@dinglemeyer 建议的代码。我确实想将我的pdf转换为图像。我假设有一个简单的方法:
<asp:GridView ID="gridview_f" runat="server" ShowHeaderWhenEmpty="false" PageSize="2" DataKeyNames="ID" DataSourceID="sql_files" AutoGenerateColumns="false" >
<Columns>
<asp:TemplateField Visible="false">
<ItemTemplate>
<asp:Label ID="selID" runat="server" Text='<%# Bind("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="selFname" runat="server" Text='<%# Bind("filename") %>' />
<br />
<asp:image ID="selFile" runat="server" ImageUrl='<%# "Handler.ashx?id="+Eval("ID") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
// code behind for ginfing the grid as the parentId is extracted from other form values.
private void gridView_Data(string id)
{
sql_files.SelectCommand = "SELECT ID, filename from myFILESTABLE where PARENTID=" + id;
}
// Handler.ascx
public void ProcessRequest(HttpContext context)
{
SqlConnection conn = null;
SqlCommand cmd = null;
SqlDataReader sdr = null;
conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["my_dbconn"].ConnectionString);
try
{
cmd = new SqlCommand("SELECT filecontent from myFILESTABLE WHERE ID=" + context.Request.QueryString["ID"], conn);
conn.Open();
sdr = cmd.ExecuteReader();
while (sdr.Read())
{
context.Response.ContentType = "content/pdf";
context.Response.BinaryWrite((byte[])sdr["filecontent"]);
}
sdr.Close();
}
finally
{
conn.Close();
}
【问题讨论】:
-
如果您发布您尝试过的代码的相关部分,这个问题会更好接受
-
我可以写入/更新文件,但无法读取为 pdf。我的 SQL 是:从 ID= 的 tblFiles 中选择文件内容?我在 TSql 中获取数据。我可以有一个以 fileContent 作为数据的 gridview,但在填充它时卡住了。
-
我的意思是你应该添加一个代码块,通过编辑它来详细说明你到目前为止在你的答案中所拥有的内容
标签: c# asp.net sql-server-2008 sqlfilestream