C# 单文件与二进制互转数据库写入读出(上传文件二进制方式到DB中,下载DB中的二进制文件到本地)

转至 :http://blog.csdn.net/fairyeye/article/details/6970266/


sing System;  

  • using System.Data;  
  • using System.Configuration;  
  • using System.Collections;  
  • using System.Web;  
  • using System.Web.Security;  
  • using System.Web.UI;  
  • using System.Web.UI.WebControls;  
  • using System.Web.UI.WebControls.WebParts;  
  • using System.Web.UI.HtmlControls;  
  • using System.IO;  
  • using System.Data.SqlClient;  
  • using System.Web.Configuration;  
  • using System.Drawing;  
  • public partial class Download : System.Web.UI.Page  
  • {  
  •     protected void Page_Load(object sender, EventArgs e)  
  •     {  
  •         MyDataGrid.DataSource = SqlDataSource1;  
  •         MyDataGrid.DataBind();  
  •     }  
  •     protected void Button1_Click(object sender, EventArgs e)  
  •     {  
  •         try  
  •         {  
  •             if (FileUpload1.PostedFile.FileName == "")  
  •             {  
  •                 Label1.Text = "文件不允许空!";  
  •                 return;  
  •             }  
  •             else  
  •             {  
  •                 string filepath = FileUpload1.PostedFile.FileName;  
  •                 string filename = filepath.Substring(filepath.LastIndexOf("//") + 1);  
  •                 int uplength = FileUpload1.PostedFile.ContentLength;//图片大小  
  •                 string fileEx = filepath.Substring(filepath.LastIndexOf(".") + 1);  
  •                 string name = filename.Substring(0, filename.Length - 4);//文件名不带后缀名   
  •                 //判断文件格式  
  •                 if (fileEx == "jpg" || fileEx == "bmp" || fileEx == "gif" || fileEx== "png")  
  •                 {  
  •                     string serverpath = Server.MapPath("upimage/") + filename;  
  •                     FileUpload1.PostedFile.SaveAs(serverpath);//先将文件上传到服务器,保存  
  •                     HttpPostedFile hp = FileUpload1.PostedFile;//创建访问客户端上传文件的对象   
  •                     Stream sr = hp.InputStream;//创建数据流对象   
  •                     byte[] b = new byte[uplength];//定义byte型数组  
  •                     sr.Read(b, 0, uplength);//将图片数据放到b数组对象实例中,其中0代表数组指针的起始位置,uplength表示要读取流的长度(指针的结束位置)    
  •                     try  
  •                     {  
  •                         //连接<a href="http://lib.csdn.net/base/mysql" class='replace_word' title="MySQL知识库" target='_blank' style='color:#df3434; font-weight:bold;'>数据库</a>字符串  
  •                         string S601_dns = WebConfigurationManager.ConnectionStrings["S601ConnectionString"].ToString();  
  •                         //创建连接对象  
  •                         SqlConnection S601_myConn = new SqlConnection(S601_dns);  
  •                         //建立执行字符串  
  •                         string S601_sql = "insert into pictures(picture,pname,ptype,psize) values(@picture,@pname,@ptype,@psize)";  
  •                         //创建数据源执行命令  
  •                         SqlCommand cmd = new SqlCommand(S601_sql, S601_myConn);  
  •                         cmd.Parameters.Add("@picture", b);  
  •                         cmd.Parameters.Add("@pname", name);  
  •                         cmd.Parameters.Add("@ptype", fileEx);  
  •                         cmd.Parameters.Add("@psize", uplength);  
  •                         //打开连接对象  
  •                         S601_myConn.Open();  
  •                         cmd.ExecuteNonQuery();  
  •                         S601_myConn.Close();  
  •                         Label1.Text = "上传成功!";  
  •                     }  
  •                     catch (Exception ex)  
  •                     {  
  •                         Label1.Text = "上传失败!原因:" + ex.Message.ToString();  
  •                     }  
  •                 }  
  •                 else  
  •                 {  
  •                     Label1.Text = "图片类型错误!";  
  •                 }  
  •             }  
  •         }  
  •         catch (Exception error)  
  •         {  
  •             Label1.Text = "处理错误!原因:" + error.ToString();  
  •         }  
  •     }  

以下是使用FileUpload 的方式:  参考如下

 FileUpload实现将图片(以二进制)保存到数据库


http://blog.csdn.net/feeltouch/article/details/4361905


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值