1、在TOAD或SQLPlus中创建一下数据库表。
1CREATE TABLE TEST_TABLE
2(
3 ID VARCHAR2(36 BYTE),
4 NAME VARCHAR2(50 BYTE),
5 PHOTO BLOB
6)
7
2、新建一个ASPX页面,在页面上放一个FileUpload控件,命名为fileUp,放置两个按钮分布为btnSave(保存),btnRead(读取)。
3、在btnSave的事件中执行一下代码,用来保存图片或文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Data.OracleClient;
using System.IO;
using System.Data;
public partial class _Default : System.Web.UI.Page
{
string strCn="Data Source=dev.liteon;User Id=dev1;Password=dev111;Integrated Security=no;";
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btnSave_Click(object sender, EventArgs e)
{
StringBuilder sbSQL = new StringBuilder("insert into Test_Table(ID,Name,Photo) values(:ID,:Name,:Photo)");
OracleConnection cn = new OracleConnection(strCn);
OracleCommand cmd = cn.CreateCommand();
cmd.CommandText = sbSQL.ToString();
cmd.Parameters.Add(":ID", OracleType.VarChar, 36).Value = Guid.NewGuid().ToString();
cmd.Parameters.Add(":Name", OracleType.VarChar, 50).Value = fileUp.FileName;
int intLen = fileUp.PostedFile.ContentLength;
byte[] pic = new byte[intLen];
fileUp.PostedFile.InputStream.Read(pic, 0, intLen);
cmd.Parameters.Add(":Photo", OracleType.Blob).Value = pic;
try
{
cn.Open();
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
cn.Close();
}
}
protected void btnRead_Click(object sender, EventArgs e)
{
OracleConnection cn = new OracleConnection(strCn);
OracleCommand cmd = cn.CreateCommand();
cmd.CommandText = "select photo from test_table";
try
{
cn.Open();
MemoryStream stream = new MemoryStream();
IDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
byte[] pic = (byte[])reader[0];
//byte[] pic = (byte[])cmd.ExecuteScalar();
stream.Write(pic, 0, pic.Length);
//注释部分能够将图片显示在IE中,而不是下载图片
//Bitmap bitMap = new Bitmap(stream);
//Response.ContentType = "image/Jpeg";
//bitMap.Save(Response.OutputStream, ImageFormat.Jpeg);
//下面的要领直接下载文件
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment;FileName= demo.JPG");
Response.BinaryWrite(pic);
//Response.End導致“由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值”的解决方法
HttpContext.Current.ApplicationInstance.CompleteRequest();
//Response.End();
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
finally
{
cn.Close();
}
}
}
本文介绍如何使用ASPX页面上传图片到Oracle数据库,并实现图片的读取。通过具体代码示例,详细展示了创建数据库表、利用FileUpload控件上传图片、保存图片到数据库以及从数据库读取图片的过程。

3426

被折叠的 条评论
为什么被折叠?



