• C#图片转换成二进制流并且保存到sql server数据库


    注意:我要存储文件二进制流的列的类型是text,不是image类型。

    我已经实现了从数据库中读取text类型的二进制流,,现在就是不知道怎么存进去.

    我的部分关键代码:

    StreamReader sr = new StreamReader(FilePath, System.Text.Encoding.GetEncoding("GB2312"), true);

    string filetext = sr.ReadLine();//这是要存进数据库的文件二进制流文本

     

    他们告诉我具体该用FileStream这个类来读取...但是我不知道怎么用...

    上面我的代码存到数据库后,我再读取出来二进制流转换成文件后,图片就无浏览..估计是我的代码是没有读完二进制流就保存到数据库了...

     

    说明:上面如果保存图片二进制流成功存到数据库后,在数据库看到的值可能是:“BM諪”是这样的..

     

    我的这种方法是错误的...希望大家能帮我看看,应该怎么改...

    非常感谢..

    问题补充:

    数据库存储二进制流的列的类型不是image,而是text类型 ,我的读取二进制字符串已经可以转换成文件了...现在就是把二进制字符串保存到数据库的时候有问题..

    这是我把文件转换为二进制字符串的代码

     string FilePath = this.openFileDialog1.FileName;                        //得到文件路径

     string filename = FilePath.Substring(FilePath.LastIndexOf("\") + 1);   //得到上传文件的文名  

    string filetext =string.Empty;

     FileStream fs = new FileStream(FilePath, FileMode.OpenOrCreate, FileAccess.Read);

     Byte[] fileByte = new Byte[(int)fs.Length];

     fs.Read(fileByte, 0, fileByte.Length);

     filetext = System.Text.Encoding.Default.GetString(fileByte); //将指定字节数组中的说有字节解码为一个字符串

    fs.Close();

    其他回答 共4条

    System.IO.FileStream fs = new System.IO.FileStream(图片路径, FileMode.OpenOrCreate, FileAccess.Read);

            byte[] fileByte = new byte[fs.Length];

            fs.Read(fileByte, 0, (int)fs.Length);

     

     

    然后将fileByte存到库里就行了。

    回答者: kgdxpr | 四级 | 2010-5-19 16:59

    text,你就当string处理就行了

    思路就是先得到图片文件的对象,然后转成byte[]

    然后转成string

    text存储二进制文件不如image好,可能小文件速度变的慢

    回答者: howeverlee | 五级 | 2010-5-19 17:04

    FileStream stream;

    IFormatter iFormatter = new BinaryFormatter();

                    stream = new FileStream("图片);

    //序列化

                    formatter.Serialize(stream, "目标");

    stream.Close();

     

    //读取的时候用反序列化

    formatter.Deserialize()

    //转化为图片格式

    回答者: hack6500 | 三级 | 2010-5-19 18:19

    private Byte[] getphoto(string photopath)   //读取照片文件到字节数组

            {

                string str = photopath;

                FileStream file = new FileStream(str, FileMode.Open, FileAccess.Read);

                Byte[] byteData = new Byte[file.Length];

                file.Read(byteData, 0, byteData.Length);

                file.Close();

                return byteData;

     }

    SQL Server下图片的插入与读取时间:2010-04-25 21:57:08来源:网络 作者:未知 点击:385次

    下午向数据库SQL SERVER中遇到添加图片类型数据的问题,本以为在界面管理器中可以直接(通过指定路径把图片的数据保存起来)添加图片却不然。网上搜了下找到了相关的较专业的资料,整合解读一下:

    下午向数据库SQL SERVER中遇到添加图片类型数据的问题,本以为在界面管理器中可以直接(通过指定路径把图片的数据保存起来)添加图片却不然。网上搜了下找到了相关的较专业的资料,整合解读一下:

    两种方法:

          第一就是在数据库中存储图片的路径,然后在程序中根据读取的路径读取图片;这种方法简单、容易使用,但是在图片过多时不好管理。

          第二种就是将图片转换成二进制存储于数据库中,sql server 2005有个image数据类型,专门用于存储图片,Image数据类型存储的是长度不确定的二进制数据,最大长度是2GB。

    第二种方法(详情请参阅:详述的过程)

    简述过程:

    当然首先得有存储图片字段的数据库、表。

    如何插入图片:

    大致流程:其他图片格式--》image类型的转化--》到MemoryStream流的转换--》到二进制的转换--》插入到数据库。

    如何得到图片:

    大致流程:选取数据库中的image类型字段--》转化为二进制流--》转化为MemoryStream流--》转化为Image图片格式类型。

    其它:如何插入读取一个文件、如何保存数据库中的image字段到一个文件。。

    本篇文章来源于:开发学院 http://edu.codepub.com   原文链接:http://edu.codepub.com/2010/0425/22271.php

  • 相关阅读:
    [CSP-S模拟测试]:迷宫(最短路)
    [CSP-S模拟测试]:五子棋(模拟)
    [CSP-S模拟测试]:点亮(状压DP+树上背包DP)
    [CSP-S模拟测试]:统计(树状数组+乱搞)
    [CSP-S模拟测试]:组合(欧拉路)
    [CSP-S模拟测试]:笨小猴(随机化)
    最小表示法
    BZOJ4868 [Shoi2017]期末考试 【三分 + 贪心】
    BZOJ4870 [Shoi2017]组合数问题 【组合数 + 矩乘】
    BZOJ4919 [Lydsy1706月赛]大根堆 【dp + 启发式合并】
  • 原文地址:https://www.cnblogs.com/sunxi/p/3408077.html
Copyright © 2020-2023  润新知