您的位置:首页精文荟萃软件资讯 → ASP.NET中存取图片到数据库的示例

ASP.NET中存取图片到数据库的示例

时间:2004/10/8 13:15:00来源:本站整理作者:蓝点我要评论(0)

//开发环境:Window 2000、SQLServer2000、.Net Framework SDK正式版
//开发语言:C#、ASP.Net
//简介:数据库中图片存蓄及读取
//作者:engine
/*
说明:在ASP中,我们用Request.TotalBytes、Request.BinaryRead()来上传图片,这个可恶的BinaryRead()方法非常笨,单个文件上传倒没什么大事,单如果多个图片上专可就花大气力了…!而现在ASP.Net中将会把解决以前ASP中文件上传的种种问题,使你在ASP.Net中轻轻松松开发出功能强大的上传程序,下面大家看看例子啦。
*/
//注意:由于作者水平有限,错误是难免的,如发现错误请指教
//Email:e_engine@21cn.com


/*
首先在SQL Server中建立一个图片存储的数库表,ImageData Column为图象二进制数据储存字段,ImageContentType Column为图象文件类型记录字段,ImageDescription Column为储蓄图象文件说明字段,ImageSize Column为储存图象文件长度字段,结构如下:
CREATE TABLE [dbo].[ImageStore] (
    [ImageID] [int] IDENTITY (1, 1) NOT NULL ,
    [ImageData] [image] NULL ,                            
    [ImageContentType] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [ImageDescription] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
    [ImageSize] [int] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
*/


//UpLoadImage.aspx程序内容如下:
<%@ Page Inherits="UploadImage.UploadImage" SRC="UpLoadImage.cs" Language="C#"%>
上传图片




    



    






上传图片(选择你要上传的图片)


      文件说明(添加上传图片说明,如:作者、出处)
    










//-------------------------------------------------------------------
//UpLoadImage.cs程序内容如下:
using System;
using System.Web;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace UploadImage
{
public class UploadImage : Page {
protected HtmlInputFile UP_FILE;          //HtmlControl、WebControls控件对象
protected TextBox txtDescription;
protected Label txtMessage;
protected Int32 FileLength = 0;          //记录文件长度变量
protected void Button_Submit(System.Object sender, System.EventArgs e) {
HttpPostedFile UpFile = UP_FILE.PostedFile;  //HttpPostedFile对象,用于读取图象文件属性
FileLength = UpFile.ContentLength;     //记录文件长度
try {
if (FileLength == 0) {   //文件长度为零时
txtMessage.Text = "请你选择你要上传的文件";
} else {
Byte[] FileByteArray = new Byte[FileLength];   //图象文件临时储存Byte数组
Stream StreamObject = UpFile.InputStream;      //建立数据流对像
//读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
StreamObject.Read(FileByteArray,0,FileLength);  
//建立SQL Server链接
SqlConnection Con = new SqlConnection("Data Source=Localhost;Initial Catalog=testdb;User ID=sa;Pwd=;");
String SqlCmd = "INSERT INTO ImageStore (ImageData, ImageContentType, ImageDescription, ImageSize) VALUES (@Image, @ContentType, @ImageDescription, @ImageSize)";
SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
CmdObj.Parameters.Add("@Image",SqlDbType.Binary, FileLength).Value = FileByteArray;
CmdObj.Parameters.Add("@ContentType", SqlDbType.VarChar,50).Value = UpFile.ContentType;  //记录文件类型
//把其它单表数据记录上传
CmdObj.Parameters.Add("@ImageDescription", SqlDbType.VarChar,200).Value = txtDescription.Text;
//记录文件长度,读取时使用
CmdObj.Parameters.Add("@ImageSize", SqlDbType.BigInt,8).Value = UpFile.ContentLength;
Con.Open();
CmdObj.ExecuteNonQuery();
Con.Close();
txtMessage.Text = "

OK!你已经成功上传你的图片";//提示上传成功
}
} catch (Exception ex) {
txtMessage.Text = ex.Message.ToString();
}}}}
//----------------------------------------------------------------------
//好了,图片已经上传到数据库,现在还要干什么呢?当然是在数据库中读取及显示在Web页中啦,请看以下程序:
//ReadImage.aspx程序内容如下:
/-----------------------------------------------------------------------
<%@ Page Inherits="ReadImage.MainDisplay" SRC="ReadImage.cs"%>
//----------------------------------------------------------------------
//ReadImage.cs程序内容如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace ReadImage {
public class MainDisplay : System.Web.UI.Page {
public void Page_Load(System.Object sender, System.EventArgs e) {
    int ImgID = Convert.ToInt32(Request.QueryString["ImgID"]);  //ImgID为图片ID
    //建立数据库链接
    SqlConnection Con = new SqlConnection("Data Source=KING;Initial Catalog=testdb;User ID=sa;Pwd=;");
    String SqlCmd = "SELECT * FROM ImageStore WHERE ImageID = @ImageID";
    SqlCommand CmdObj = new SqlCommand(SqlCmd, Con);
    CmdObj.Parameters.Add("@ImageID", SqlDbType.Int).Value = ImgID;
    Con.Open();
    SqlDataReader SqlReader = CmdObj.ExecuteReader();
    SqlReader.Read();    
    Response.ContentType = (string)SqlReader["ImageContentType"];//设定输出文件类型
    //输出图象文件二进制数制
    Response.OutputStream.Write((byte[])SqlReader["ImageData"], 0, (int)SqlReader["ImageSize"]);    
    Response.End();
    Con.Close();
    //很简单吧^_^
 }
}
}
//--------------------------------------------------------------------
//最后,我们当然要把它在Web页面显示出来啦
//ShowImage.hml


这个是从数据库读取出来的图象:


//------------------------------------------------------------------
//最后,这程序当然还很多改进之处,希望大家多想想多编编一定可以写出更多的图象上传程序
//Good Luck,engine


相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本