今天在试着用vs中response.binarywrite方法将图片已二进制流的形式输出到客户端时,一直失败..图片总是已乱码的形式存在...
<span style="font-family:Microsoft YaHei;"> //打开图片,保存在流中
FileStream fs = new FileStream(Server.MapPath("pic.jpg"), FileMode.Open);
//获得流的大小
long filesize = fs.Length;
//定义二进制数组
byte[] Buffer = new byte[(int)filesize];
//从流中读取字节块并将数据写入缓冲区
fs.Read(Buffer, 0, (int)filesize);
//关闭流
fs.Close();
//设定response类型
// Response.ContentType = "image/jpg";
//输出流
Response.BinaryWrite(Buffer);
</span>
最终的解决办法是,设置
Response.ContentType="image/jpg";
问题得到解决
图片
的常见存储与读取凡是有以下几种:
存储
图片
:以二进制的形式存储
图片
时,要把数据库中的字段设置为Image数据类型(SQL Server),存储的数据是Byte[].
1.参数是
图片
路径:返回Byte[]类型: public byte[] GetPictureData(string imagepath)
/**/////根据
图片
文件的路径使用文件流打开,并保存为byte[]
FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重载方法
byte[] byData = new byte[fs.Length];
fs.Read(byData, 0, byData.Length);
fs.Close();
return byData;
}2.参数类型是Image对象,返回Byte[]类型: public byte[] PhotoImageInsert(System.Drawing.Image imgPhoto)
//将Image转换成流数据,并保存为byte[]
MemoryStream mstream = new MemoryStream();
imgPhoto.Save(mstream, System.Drawing.Imaging.ImageFormat.Bmp);
byte[] byData = new Byte[mstream.Length];
mstream.Position = 0;
mstream.Read(byData, 0, byData.Length);
mstream.Close();
return byData;
}好了,这样通过上面的方法就可以把
图片
转换成Byte[]对象,然后就把这个对象保存到数据库中去就实现了把
图片
的二进制格式保存到数据库中去了。下面我就谈谈如何把数据库中的
图片
读取出来,实际上这是一个相反的过程。
读取
图片
:把相应的字段转换成Byte[]即:Byte[] bt=(Byte[])XXXX
1.参数是Byte[]类型,返回值是Image对象: public System.Drawing.Image ReturnPhoto(byte[] streamByte)
System.IO.MemoryStream ms = new System.IO.MemoryStream(streamByte);
System.Drawing.Image img = System.Drawing.Image.FromStream(ms);
return img;
}2.参数是Byte[] 类型,没有返回值,这是针对asp.net中把
图片
从
输出
到网页上(
Response
.
BinaryWrite
)
public void WritePhoto(byte[] streamByte)
//
Response
.ContentType 的默认值为默认值为“text/html”
Response
.ContentType = "image/GIF";
//
图片
输出
的类型有: image/GIF image/JPEG
Response
.
BinaryWrite
(streamByte);
针对
Response
.ContentType的值,除了针对
图片
的类型外,还有其他的类型:
Response
.ContentType = "application/msword";
Response
.ContentType = "application/x-shockwave-flash";
Response
.ContentType = "application/vnd.ms-excel";另外可以针对不同的格式,用不同的
输出
类型以适合不同的类型: switch (dataread("document_type"))
case "doc":
Response
.ContentType = "application/msword";
case "swf":
Response
.ContentType = "application/x-shockwave-flash";
case "xls":
Response
.ContentType = "application/vnd.ms-excel";
case "gif":
Response
.ContentType = "image/gif";
case "Jpg":
Response
.ContentType = "image/jpeg";
乱
码产生的原因:不管是request
乱
码还是
response
乱
码,其实都是由于客户端(浏览器)跟服务器端采用的编码格式不一致造成的。以request
乱
码为例:浏览器向服务
原因:请求行的字符集是属于服务器的字符集,tomcat8以后都默认字符集UTF-8
请求头 ,会在cookie数据会出现
乱
码
原因: cookie的数据都是从服务器的响应携带出来的,并且响应是一个
输出
流,
输出
缓冲区有字符集。
请求体 ,只有Post请求方式才有请求体,在服务器获得请求体参数时会出现
乱
码
原因:字符集为 ISO8859-1 字符集 - 流
响应头 ,文件下载的时...
今天学习
Response
对象,该对象的有很多的
输出
方式,其中有一个
binaryWrite
可以
输出
图片
,但是在
输出
图片
一开始出现了
乱
码,后来通过百度得到解决;
FileStream stream = new FileStream(Server.MapPath("./fff.jpg"),FileMode.Open);
long FileSiz...
尽管ASP.NET提供了一个强壮的平台,但是开发者也不应忽视诸如JavaScript这样成熟的技术。在这篇文章中,Tony Patton将向您解释在Web开发中如何将JavaScript与ASP.NET控件进行整合。
尽管Web开发平台提供了灵活性和众多功能,您经常希望或需要依赖现有的技术来完成一项必须的任务,一个好的例子就是ASP.NET,它提供了一个强大的开发平台,但是同时也不应忽略像J
protected void Page_Load(object sender, EventArgs e)
FileStream fs = new FileStream(Server.MapPath("未命名.jpg"), FileMode.Open);//将
图片
文件存在文件流中
long fslength = fs.Le...
我们经常将文件上传到数据库中,比如Sql Server中.然后在下载的时候,用的比较多的也就是
Response
.
BinaryWrite
()方法,然而如果直接
输出
的话,其文件名总是为你的页面的文件名,如downLoadFile.aspx.其解决方法为:
1 Page.
Response
.Buffer=true; 2 Page.
Response
.Clear(); 3 //这里的Content...
asp php 一起使用的SHELL 工具 <HTML><HEAD> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>PHP+ASP</title> </HEAD>...br>
本文主要讲述
response
乱
码原因及
response
.setCharacterEncoding(&amp;amp;quot;UTF-8&amp;amp;quot;)不生效的原因及解决方法
一、
response
乱
码
1、首先,
response
返回有两种,一种是字节流outputstream,一种是字符流printwrite。
申明:这里为了方便起见,所有
输出
都统一用UTF-8编码。...
这时候如果传输的数据是中文,
输出
到浏览器就会
乱
码
乱
码原因:首先,要知道
乱
码的根本原因是什么,
乱
码的根本原因在于编码和解码使用的字符集不一样。那么在从服务器
输出
数据到客户端的过程中,有几次编码和解码过程?又分别是在哪里执行的?
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.serv...