【发布时间】:2014-06-12 01:20:32
【问题描述】:
我正在尝试从数据库下载文件,但它给了我一个名为 unaasigned local variable 的错误: 返回字节;
请告诉我如何将字符串转换为字节,提前谢谢。
我有一个名为 SaleFileName 的列,我想从中下载一个文件。
aspx代码:
<asp:TemplateField HeaderText="RecieptName" SortExpression="RecieptName">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="Download" CommandArgument='<%# Bind("SaleFileName") %>' Text='<%# Bind("SaleFileName") %>' ></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
文件背后的代码:
private byte[] ReadFileFromDatabase(string FileName) {
string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString2"].ConnectionString;
byte[] bytes;
using (SqlConnection con = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
cmd.CommandText = "selectSaleFileName from Contributions where SaleFileName = @SaleFileName";
cmd.Parameters.AddWithValue("@SaleFileName", FileName);
cmd.Connection = con;
con.Open();
using ( SqlDataReader sdr = cmd.ExecuteReader())
{
if (sdr.Read() )
bytes = (byte[])sdr["SaleFileName"];
}
con.Close();
}
}
return bytes; // This line is giving an error of unassigned error. Bytes is not assigned to anything it says.
}
protected void gridContributions_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Download")
{
string FileName = Convert.ToString(e.CommandArgument);
byte[] bytes = ReadFileFromDatabase(FileName);
Response.Clear()
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; FileName=" + FileName + ";");
Response.BinaryWrite(bytes)
Response.End()
}
}
【问题讨论】: