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
C#图片转换成二进制流并且保存到sql server数据库的更多相关文章
- java中如何把图片转换成二进制流的代码
在学习期间,把开发过程经常用到的一些代码段做个备份,下边代码内容是关于java中如何把图片转换成二进制流的代码,应该能对各朋友也有用处. public byte[] SetImageToByteArr ...
- C#将image中的显示的图片转换成二进制
原文:C#将image中的显示的图片转换成二进制 1.将Image图像文件存入到数据库中 我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才 ...
- [转]C#将image中的显示的图片转换成二进制
本文转自:http://www.cnblogs.com/shuang121/archive/2012/07/09/2582654.html .将Image图像文件存入到数据库中 我们知道数据库里的Im ...
- java将图片转换成二进制
package com.oumyye.图片; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; imp ...
- C#中 将图片保存到Sql server 中
private void Form1_Load(object sender, EventArgs e) { #region 保存数据库 string url = @"C:\Users\Adm ...
- net9:图片文件转换成二进制流存入SQL数据库,以及从数据库中读取二进制流输出文件
原文发布时间为:2008-08-10 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- PDF转换成二进制字符串写入 HTTP 输出流
最近项目需要做电子签章,需要网页打开PDF签章后保存:正好复习哈二进制和流的转换: 文件转换成二进制字符串写入HTTP输出流 protected void Page_Load(object sende ...
- php将文件转换成二进制输出[转]
header( "Content-type: image/jpeg"); $PSize = filesize('1.jpg'); $picturedata = fread(fope ...
- 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)
在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...
随机推荐
- mysql8.0无法给用户授权或提示You are not allowed to create a user with GRANT的问题
提示意思是不能用grant创建用户,mysql8.0以前的版本可以使用grant在授权的时候隐式的创建用户,8.0以后已经不支持,所以必须先创建用户,然后再授权,命令如下: mysql> CRE ...
- ELK+Kafka学习笔记之FileBeat日志合并配置输出到kafka集群
filebeat.prospectors: - type: log #日志输出类型 enabled: true ...
- Mysql管理工具 SqlYog快捷键大全
Ctrl+M 创建一个新的连接Ctrl+N 使用当前设置新建连接Ctrl+F4 断开当前连接 对象浏览器F5 刷新对象浏览器(默认)Ctrl+B 设置焦点于对象浏览器 SQL 窗口 ...
- Python3 Selenium自动化测试赋值出现:WebDriverException: Message: unknown error: call function result missing 'value'
Python3 Selenium自动化测试赋值出现:WebDriverException: Message: unknown error: call function result missing ' ...
- 依赖注入(DI)在PHP中的实现
什么是依赖注入? IOC:英文全称:Inversion of Control,中文名称:控制反转,它还有个名字叫依赖注入(Dependency Injection,简称DI). 当一个类的实例需要另一 ...
- Android 实践项目开发 总结
Android 实践项目开发 总结 课程:移动平台应用开发实践 班级:201592 姓名:杨凤 学号:20159213 成绩:___________ 指导老师:娄嘉鹏 ...
- UVa 1451 Average - 斜率优化
A DNA sequence consists of four letters, A, C, G, and T. The GC-ratio of a DNA sequence is the numbe ...
- Win10 Edge浏览器怎么重装 Win10重装Edge浏览器
具体如下: 重新安装Microsoft Edge 1.按Windows键+ R,打开 输入以下代码,可以直接复制黏贴. %LocalAppData%\Packages\Microsoft.Micros ...
- thinkphp中的__DIR__ __ROOT__ __APP__ __MODULE__ APP_PATH LIB_PATH MODULE_PATH 等是在哪里定义的?
为什么会产生这样的 路径 常量等 的 困扰? 是由于 在tp中, 使用了多种形式的常量导致的, 比如, 有php语言本身的 "魔术常量", 有 php函数, 比如dirname定义 ...
- 论文笔记——PRUNING FILTERS FOR EFFICIENT CONVNETS
论文地址:https://arxiv.org/abs/1608.08710 主要思想 这篇文章主要讲了对filters的裁剪,裁剪方法是计算L1范数,然后裁剪掉较少的,多少取决于加速比. 实现效果 V ...