asp.net 上传下载 输出二进制流

using System;  
using System.Collections;  
using System.Configuration;  
using System.Data;  
using System.Linq;  
using System.Web;  
using System.Web.Security;  
using System.Web.UI;  
using System.Web.UI.HtmlControls;  
using System.Web.UI.WebControls;  
using System.Web.UI.WebControls.WebParts;  
using System.Data.SqlClient;  
using System.IO;  
namespace Delegate  
{  
    public partial class ReadStream : System.Web.UI.Page  
    {  
        protected void Page_Load(object sender, EventArgs e)  
        {  
        }  
        /// <summary>  
        /// 将上传的文件转换成二进制流保存在数据库  
        /// </summary>  
        /// <param name="sender"></param>  
        /// <param name="e"></param>  
        protected void Button1_Click(object sender, EventArgs e)  
        {  
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sql"].ToString());  
            string strSql="insert into test(timage)values(@images)";//保存二进制流的方式需参数的形式  
            SqlCommand cmd = new SqlCommand(strSql, conn);  
            conn.Open();  
            string filepath = Server.MapPath("~/");  
            filepath += FileUpload1.FileName;  
            FileUpload1.SaveAs(filepath);  
            FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);//读取文件  
            BinaryReader br = new BinaryReader(fs);  
            byte[] photo = br.ReadBytes((int)fs.Length);  
            br.Close();  
            fs.Close();  
            cmd.Parameters.Add("@images", SqlDbType.Binary, photo.Length);//设置参数  
            cmd.Parameters["@images"].Value = photo;//设置值  
            if (cmd.ExecuteNonQuery() == 1)  
            {  
                Response.Write("添加成功!");  
            }  
            conn.Close();  
        }  
        protected void Button2_Click(object sender, EventArgs e)  
        {  
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["sql"].ToString());  
            conn.Open();  
            string strSql = "select top 1 timage  from test";  
            SqlCommand cmd = new SqlCommand(strSql, conn);  
            SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);  
            if (dr.Read())  
            {  
                byte[] by = (byte[])dr[0];  
                Response.AddHeader("Content-Disposition", "attachment;   filename=ceshi.txt");//设置读取的文件头  
                Response.AddHeader("Content-Length", by.Length.ToString());  
                Response.ContentType = "text/plain";//设置输出类型 这里可以保存在数据库中 动态实现类型  
                Response.OutputStream.Write(by, 0, by.Length); //输出  
                Response.Flush();  
            }  
            conn.Close();  
        }  
    }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值