上传文件以二进制存储到数据库中

转载 http://www.cnblogs.com/xiaowu/archive/2011/08/16/2141422.html

一:上传 (把文件上传到数据库中image类型的字段中去了)

复制代码
public void upload()
{
Stream objFs;                
objFs = uploadFile.PostedFile.InputStream;
BinaryReader objBr = new BinaryReader(objFs);
byte[] bytFile = objBr.ReadBytes((int)objFs.Length);
//文件内容
model.DocContent = bytFile;
//归档单位
model.FilingUnit = this.ddlFilingUnit.SelectedValue.ToString().Trim();
//归档号
model.FilingNo = this.txtFilingNo.Value.Trim();
//文件名(后台控制:用户留空时则录入原文件名)
if(this.txtDocName.Value.ToString().Trim() == "" || this.txtDocName.Value.ToString().Trim() == null)
{
int start = uploadFile.PostedFile.FileName.LastIndexOf("\\");
int end = uploadFile.PostedFile.FileName.LastIndexOf(".");
model.DocName = uploadFile.PostedFile.FileName.Substring(start+1, end-start-1);
}
else
{
model.DocName = this.txtDocName.Value.Trim();
}
//获取文件后缀名:1、获取初始文件名
string tempStr = this.uploadFile.PostedFile.FileName.ToString();
//2、取得文件名中最后一个"."的索引
int i = tempStr.LastIndexOf(".") + 1;
//3、获取文件扩展名并转为小写
model.DocSuffix = tempStr.Substring(i).ToLower();
//文件大小
model.DocSize = this.uploadFile.PostedFile.ContentLength;
//MIME类型
model.ContentType = this.uploadFile.PostedFile.ContentType;
new RecordsMgtBll().AddDoc(model);

}
 
复制代码

二:下载 新建一个用于输出文件的页面(点击下载的时候就跳转到此页面并且传要下载的文件ID)

复制代码
 private void Page_Load(object sender, System.EventArgs e)
{
    if(!Page.IsPostBack)
    {
    _DocId = Request.QueryString["DocId"];
    ViewState["_DocId"] = _DocId;
    }
    string sql="SELECT * FROM b_bridge_doc WHERE DocId='" + ViewState["_DocId"].ToString() + "' ";
    SqlConnection connection = new SqlConnection(System.Configuration.ConfigurationSettings.
    AppSettings["SqlServerConnectionString"]);
    SqlCommand command = new SqlCommand(sql, connection);
    connection.Open();
    SqlDataReader dr = command.ExecuteReader();
    if(dr.Read())
    {
      Response.Clear();
      Response.AddHeader("Content-Type", dr["ContentType"].ToString());
      string fileName = dr["DocName"].ToString() + "." + dr["DocSuffix"].ToString();
      Response.AddHeader("Content-Disposition", "attachment; filename=" + 
      HttpUtility.UrlEncode( fileName));
      Response.Flush();
      Response.BinaryWrite((byte[])dr["DocContent"]);
     }
     dr.Close();
     connection.Close();
}
复制代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值