以二进制码形式将图片存到数据库中,再从数据库中以二进制的形式从数据库中读出来

2024-05-05 08:18

本文主要是介绍以二进制码形式将图片存到数据库中,再从数据库中以二进制的形式从数据库中读出来,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.FileUpload控件和上传的button控件

    <asp:FileUpload ID="fuPhoto" runat="server" Style="width: 150px;" />
    <asp:Button ID="btnSaveImage" runat="server" Text="上传" OnClick="btnSaveImage_Click"  Style="width: 50px;" ValidationGroup="QUXIAO" />

2.button的点击事件

 protected void btnSaveImage_Click(object sender, EventArgs e)
        {
            HttpPostedFile UpFile = fuPhoto.PostedFile;
            try
            {
                if (UpFile.ContentLength == 0)
                {      //文件长度为零时 
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请选择要上传的图片')</script>");
                    //Page.RegisterStartupScript("err", "<script language=javascript>alert('请你选择你要上传的文件');</script>");
                }
                else
                {
                    FileByteArray = new Byte[UpFile.ContentLength];      //图象文件临时储存Byte数组 
                    Stream StreamObject = UpFile.InputStream;    //建立数据流对像 
                    //读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度 
                    StreamObject.Read(FileByteArray, 0, UpFile.ContentLength);
                    Session["photo"] = FileByteArray;
                    this.Image1.ImageUrl = "ImageView.aspx?random=" + new Random().Next().ToString();

                }
            }
            catch (Exception err)
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('上传文件失败')</script>");
                //Page.RegisterStartupScript("err", "<script language=javascript>alert('上传文件失败," + err.Message + "');</script>");
            }

 

        }

 

3.建一个新页面(ImageView.aspx.)

此页面前台不放任何控件,后台代码:

 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (Session["photo"] != null)
                {
                    Byte[] FileByteArray = (Byte[])Session["photo"];
                    Response.BinaryWrite(FileByteArray);
                    Response.End();
                }
                else
                {
                    string name = HttpContext.Current.Server.MapPath("~/images/nothing.jpg");
                    FileStream fs = File.OpenRead(name);
                    byte[] content = new byte[fs.Length];
                    fs.Read(content, 0, content.Length);
                    Response.BinaryWrite(content);
                    Response.End();
                }
            }


        }

4.在上传页面的pageload写上如代码.

         if (!IsPostBack)
            {
                Image1.ImageUrl = "ImageView.aspx?random=" + new Random().Next().ToString();
            }

5.将上传的图片以二进制的形式存到数据库中

pageload中  FileByteArray = null;Session["photo"] = null;

保存方法中  patInfo.Photo = (Byte[])Session["photo"];

6.将二进制的图片从数据库中读出来

公共方法中

  public string saveFilePath
        {
            get { return ViewState["saveFilePath"].ToString(); }
            set { ViewState["saveFilePath"] = value; }
        }
        public Byte[] FileByteArray
        {
            get
            {

                return ViewState["FileByteArray"] as Byte[];

            }

            set { ViewState["FileByteArray"] = value; }


        }

显示图片

                    FileByteArray = (Byte[])patInfo.Photo;
                    Session["photo"] = (Byte[])patInfo.Photo;

 

这篇关于以二进制码形式将图片存到数据库中,再从数据库中以二进制的形式从数据库中读出来的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961221

相关文章

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

嵌入式数据库SQLite 3配置使用讲解

《嵌入式数据库SQLite3配置使用讲解》本文强调嵌入式项目中SQLite3数据库的重要性,因其零配置、轻量级、跨平台及事务处理特性,可保障数据溯源与责任明确,详细讲解安装配置、基础语法及SQLit... 目录0、惨痛教训1、SQLite3环境配置(1)、下载安装SQLite库(2)、解压下载的文件(3)、

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

在Linux终端中统计非二进制文件行数的实现方法

《在Linux终端中统计非二进制文件行数的实现方法》在Linux系统中,有时需要统计非二进制文件(如CSV、TXT文件)的行数,而不希望手动打开文件进行查看,例如,在处理大型日志文件、数据文件时,了解... 目录在linux终端中统计非二进制文件的行数技术背景实现步骤1. 使用wc命令2. 使用grep命令

postgresql数据库基本操作及命令详解

《postgresql数据库基本操作及命令详解》本文介绍了PostgreSQL数据库的基础操作,包括连接、创建、查看数据库,表的增删改查、索引管理、备份恢复及退出命令,适用于数据库管理和开发实践,感兴... 目录1. 连接 PostgreSQL 数据库2. 创建数据库3. 查看当前数据库4. 查看所有数据库

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(