zoukankan
html css js c++ java
图像保存到XML文件和从XML中取出图像显示
一、保存到XML文件
//
得到用户要上传的文件名
string
strFilePathName
=
loFile.PostedFile.FileName;
string
strFileName
=
Path.GetFileName(strFilePathName);
int
FileLength
=
loFile.PostedFile.ContentLength;
if
(FileLength
<=
0
)
return
;
try
{
Byte[] FileByteArray
=
new
Byte[FileLength];
//
图象文件临时储存Byte数组
Stream StreamObject
=
loFile.PostedFile.InputStream;
//
建立数据流对像
//
读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,
0
,FileLength);
string
fileName
=
Server.MapPath(
"
.\\WriteXml.xml
"
);
//
要打开的文件
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(fileName);
XmlNode root
=
xmlDoc.SelectSingleNode(
"
dbImage
"
);
//
查找<dbGuest>
XmlNodeList xnl
=
xmlDoc.SelectSingleNode(
"
dbImage
"
).ChildNodes;
int
nIndex
=
xnl.Count;
//
以下添加新结点
XmlElement xe1
=
xmlDoc.CreateElement(
"
Image
"
);
//
创建一个<User>节点
XmlElement xesub1
=
xmlDoc.CreateElement(
"
ImageID
"
);
xesub1.InnerText
=
nIndex.ToString();
//
设置文本节点
xe1.AppendChild(xesub1);
//
添加到<User>节点中
XmlElement xesub2
=
xmlDoc.CreateElement(
"
ImageContentType
"
);
xesub2.InnerText
=
loFile.PostedFile.ContentType;
xe1.AppendChild(xesub2);
XmlElement xesub3
=
xmlDoc.CreateElement(
"
ImageSize
"
);
xesub3.InnerText
=
FileLength.ToString();
xe1.AppendChild(xesub3);
XmlElement xesub4
=
xmlDoc.CreateElement(
"
ImageDescription
"
);
xesub4.InnerText
=
tbDescription.Text;
xe1.AppendChild(xesub4);
XmlElement xesub5
=
xmlDoc.CreateElement(
"
ImageData
"
);
xesub5.InnerText
=
Convert.ToBase64String(FileByteArray);
xe1.AppendChild(xesub5);
root.AppendChild(xe1);
//
添加到<dbGuest>节点中
xmlDoc.Save(fileName);
Response.Redirect(
"
ShowAllImg.aspx
"
);
}
catch
{
}
二、从XML文件中取出显示
int
ImgID
=
Convert.ToInt32(Request.QueryString[
"
ID
"
]);
//
ID为图片ID
//
建立数据库链接
string
fileName
=
Server.MapPath(
"
.\\WriteXml.xml
"
);
//
要打开的文件
XmlDocument xmlDoc
=
new
XmlDocument();
xmlDoc.Load(fileName);
XmlNodeList node
=
xmlDoc.SelectSingleNode(
"
//Image[ImageID='
"
+
ImgID.ToString()
+
"
']
"
).ChildNodes;
if
(node
!=
null
)
{
string
strType
=
node.Item(
1
).InnerText;
string
strData
=
node.Item(
4
).InnerText;
int
nSize
=
int
.Parse(node.Item(
2
).InnerText);
Response.ContentType
=
strType;
//
设定输出文件类型
//
输出图象文件二进制数制
Response.OutputStream.Write(Convert.FromBase64String(strData),
0
, nSize);
Response.End();
//
也可以保存为图像
//
FileStream fs = new FileStream(@"C:\aa.BMP", FileMode.OpenOrCreate, FileAccess.Write);
//
fs.Write((Convert.FromBase64String(strData), 0,nSize);
//
fs.Close();
}
查看全文
相关阅读:
使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)
Android学习-应用程序管理
用户过2亿获取每个用户不到6分钱,闪传是怎么做到?(最大的成本是决策成本,否则全是无用功)
Delphi应用程序的调试(十)调试器选项(在IDE中不要使用异常)
无标题窗体拖动(三种方法)
关于Qt在子线程中使用QMessageBox的折衷方法
Qt自定义事件的实现(军队真正干活,但要增加监军,大平台通知事件,事件内容自定义)
java对数据库的操作
ddd
伟大是熬出来的
原文地址:https://www.cnblogs.com/ghd258/p/256605.html
最新文章
捣腾数字签名
Chrome不支持NPAPI的信息与替代方案
微软证书的公司列表
挨踢江湖之十七
不应该听医生的忽悠,做过敏性测试
Delphi COM编程学习笔记(1)
Qt浅谈之十八:GraphicsView框架事件处理(有源码下载)
微软UAC大法好
为什么 O2O 领域融资额特别高?
WIN7操作平台获取管理员权限批处理
热门文章
驱动里执行应用层代码之KeUserModeCallBack(WOW64是由三个动态库wow64.dll wow64win.dll wow64cpu.dll来实现)
文件过滤驱动开发
只要肯用脑子,就不是简单的重复(拥抱重复,发现规律,发现价值,一万小时的基础)
MFC浅析(4) CObject浅析
锚定梦想,一切变简单(不是真的有勇气,而是不能帮助实现梦想的环境要坚决放弃)
java链接mysql数据库
周鸿祎:战略不能在云端,必须要落地到产品(必须重视产品体验:凡是有缺陷的地方,都有改善的空间,都代表着创新的机会,都代表着可能存在市场机会)
速度比融资价格更重要(谁先爬上去,谁就能先架起机枪横扫)
把自己当成打工的,一辈子都是打工的(太精彩了,怀着创业的心态,那么你在什么状态都可以叫创业,深入实践与学习就是创业,鼓励创业其实是鼓励创业的精神,成立公司只是一种形式,虚荣心没有意义)
周鸿祎:你能不能像打游戏一样干工作?(老周对工作的看法与常人迥异,了不起)
Copyright © 2011-2022 走看看