简单写几个例子,图片在xml和数据库的存储和在web页的显示
一种是用字节数组表示二进制数据
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Xml.XPath" %>
![](/Images/OutliningIndicators/None.gif)
<script runat="server">
void Page_Load(object sender, EventArgs e)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
string xmlFilePath = @"C:\Employees.xml";
string imageFileName = @"C:\Employee.jpg";
try
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
using (XmlWriter writer = XmlWriter.Create(xmlFilePath))
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//Start writing the XML document
writer.WriteStartDocument(false);
writer.WriteStartElement("employee");
writer.WriteAttributeString("id", "1");
writer.WriteStartElement("image");
writer.WriteAttributeString("fileName", imageFileName);
//Get the size of the file
FileInfo fi = new FileInfo(imageFileName);
int size = (int)fi.Length;
//Read the JPEG file
byte[] imgBytes = new byte[size];
FileStream stream = new FileStream(imageFileName, FileMode.Open);
BinaryReader reader = new BinaryReader(stream);
imgBytes = reader.ReadBytes(size);
reader.Close();
//Write the JPEG data
writer.WriteBinHex(imgBytes, 0, size);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
//flush the object and write the XML data to the file
writer.Flush();
lblResult.Text = "File is written successfully";
}
}
catch (Exception ex)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
lblResult.Text = "An Exception occurred: " + ex.Message;
}
}
![](/Images/OutliningIndicators/None.gif)
</script>
![](/Images/OutliningIndicators/None.gif)
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Writing Images using XmlWriter</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:label id="lblResult" runat="server" />
</div>
</form>
</body>
</html>
读取显示
System.Xml.XPath.XPathDocument xdoc = new XPathDocument(xmlFilePath);
XPathNavigator xNav = xdoc.CreateNavigator();
XPathNodeIterator nodes = xNav.Select("employee/image");
string file = string.Empty;
while(nodes.MoveNext())
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
file = nodes.Current.Value;
}
int size = System.Text.Encoding.Default.GetByteCount(file);
XmlReader xmlRead = XmlReader.Create(xmlFilePath);
while(xmlRead.Read())
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
if(xmlRead.NodeType == XmlNodeType.Element && xmlRead.Name == "image")
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
byte[] bb = new byte[size];
xmlRead.ReadElementContentAsBinHex(bb, 0, size);
Response.BinaryWrite(bb);
}
}
第二种是
FileUpload上传图片
<%@ Page Language="C#" %>
![](/Images/OutliningIndicators/None.gif)
<%@ Import Namespace="System.Data.SqlClient" %>
![](/Images/OutliningIndicators/None.gif)
<script runat="server">
string CanUploadExt = "|.jpg|.gif|.bmp|.png|.jpeg|";
protected void Page_Load(object sender, EventArgs e)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
if (!Page.IsPostBack)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
string ConnectionString = "Data Source=.;Initial Catalog=pubs;User Id=sa;Password=;";
SqlConnection cn = new SqlConnection(ConnectionString);
string sql = "select id,Title from UserList Order By id DESC";
cn.Open();
SqlCommand cmd = new SqlCommand(sql, cn);
GridView1.DataSource = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
GridView1.DataBind();
cn.Close();
cn.Dispose();
}
}
![](/Images/OutliningIndicators/None.gif)
protected void Button1_Click(object sender, EventArgs e)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
if (FileUpload1.HasFile)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
string FileExt = System.IO.Path.GetExtension(FileUpload1.FileName);
if (FileExt.Length < 1)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return;
}
FileExt = FileExt.ToLower();
if (CanUploadExt.IndexOf("|" + FileExt + "|") == -1)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return;
}
string ContentType = FileUpload1.PostedFile.ContentType;
byte[] fileData = FileUpload1.FileBytes;
string sql;
sql = "INSERT INTO UserList (Title,ContentType,Photo) Values(@Title,@ContentType,@Photo)";
string ConnectionString = "Data Source=.;Initial Catalog=pubs;User Id=sa;Password=;";
SqlConnection cn = new SqlConnection(ConnectionString);
cn.Open();
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.Parameters.Add("@Title", System.Data.SqlDbType.NVarChar);
cmd.Parameters.Add("@ContentType", System.Data.SqlDbType.VarChar);
cmd.Parameters.Add("@Photo", System.Data.SqlDbType.Image);
cmd.Parameters["@Title"].Value = TextBox1.Text;
cmd.Parameters["@ContentType"].Value = ContentType;
cmd.Parameters["@Photo"].Value = fileData;
cmd.ExecuteNonQuery();
cn.Close();
cn.Dispose();
}
Response.Redirect(Request.UrlReferrer.ToString());
}
</script>
![](/Images/OutliningIndicators/None.gif)
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>FileUpload 服务器控件</title>
![](/Images/OutliningIndicators/None.gif)
<script type="text/javascript" language="javascript">
var CanUploadExt = "<%=CanUploadExt %>"
function CheckExt()
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
var oFile = document.getElementById('<%=FileUpload1.ClientID %>')
var ext = oFile.value.substr(oFile.value.lastIndexOf("."))
if(ext.length < 1)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
alert("请选择图像文件。")
return false
}
else
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
ext = ext.toLowerCase();
if(CanUploadExt.indexOf("|" + ext + "|") == -1)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
alert("请选择图像文件:" + CanUploadExt)
return false
}
}
return true
}
</script>
![](/Images/OutliningIndicators/None.gif)
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField HeaderText="姓名" NullDisplayText="未输入" DataField="Title" />
<asp:ImageField HeaderText="照片" DataImageUrlField="id"
DataImageUrlFormatString="ShowImageCS.aspx?id={0}" NullImageUrl="~/images/none.gif">
</asp:ImageField>
</Columns>
</asp:GridView>
姓名:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" OnClientClick="return CheckExt()"
Text="上传" />
</form>
</body>
</html>
显示
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
Response.Clear();
int IsOkID;
bool strImageID = Int32.TryParse(Request.QueryString["id"], out IsOkID);
if (!strImageID)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Response.ContentType = "image/gif";
Response.WriteFile("~/images/none.gif");
return;
}
string ConnectionString = "Data Source=.;Initial Catalog=pubs;User Id=sa;Password=;";
SqlConnection cn = new SqlConnection(ConnectionString);
string sql = "select ContentType,Photo from UserList Where id=@id";
cn.Open();
SqlCommand cmd = new SqlCommand(sql, cn);
cmd.Parameters.Add("@id", System.Data.SqlDbType.Int, 4);
cmd.Parameters["@id"].Value = IsOkID;
SqlDataReader myDataReader;
myDataReader = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
if (myDataReader.Read())
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Response.ContentType = myDataReader["ContentType"].ToString();
Response.BinaryWrite((byte[])myDataReader["Photo"]);
}
else
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
Response.ContentType = "image/gif";
Response.WriteFile("~/images/none.gif");
}
cn.Close();
cn.Dispose();
Response.End();
}
</script>