1表格结构 邮件_邮件附件
2 代码
public class DownLoadFile : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
int staffId=UserPrincipal.GetUserData(UserDataType.StaffId);
int fileid=int.Parse(Request.QueryString.Get("id"));
if(staffId==null||fileid=null||fileid=="")
{
Response.Write();
Response.End();
}
else
{
DataRow row=this.GetFileInfo(fileid);
if(row!=null)//row[""]
{
Response.Clear();
if(File.Exists(row["硬盘文件"]))
{
Response.AddHeader("Discription","filename"+row["文件名称"]);
FileStream stream=new FileStream((string)row["硬盘文件"],FileMode.Open,FileAccess.Read,FileShare.Read);
long filelength=stream.Length;
byte[] buffer=new byte[10000];
while(filelength>0)//文件长度>0
{
if(Response.IsClientConnected)
{
int Readedlength=stream.Read(buffer,0,10000);//从流中读取字节并将其写入给定的缓冲区buffer,返回读入缓冲区的字节数
Response.OutputStream.Write(buffer,0,Readedlength);
Response.Flush();//清除所有缓冲区
buffer=new byte[10000];
filelength-=Readedlength;
}
else
{
filelength=-1;
}
}
stream.Close();
Response.End();
}
else
{
Response.Write("当前文件不存在!可能已经被删除!");
Response.End();
return;
}
Response.End();
}
else
{
Response.Write("当前文件不存在!");
Response.End();
}
}
}
/// <summary>
/// 得到邮件附件的信息。文件存放路径和文件名称。
/// </summary>
/// <param name="FileId"></param>
/// <returns></returns>
private DataRow GetFileInfo(int FileId)
{
using(SqlConnection conn=new SqlConnection(DbConfig.DataConnString))
{
conn.Open();
SqlCommand cmd=new SqlCommand("select 文件名称, 硬盘文件 from 邮件_邮件附件 where 附件id=@fileid",conn);
cmd.Parameters.Add("@fileid",FileId);
DataTable table=new DataTable();
new SqlDataAdapter(cmd).Fill(table);
if(table.Rows.Count>0)
return table.Rows[0];
else
return null;
}
}