如何将图片上传保存到数据库中?

andy0618 2005-04-25 08:44:03
如何将图片上传保存到数据库中?
谢谢!
...全文
271 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
hchxxzx 2005-06-13
  • 打赏
  • 举报
回复
下面给你一个上传图片及显示的例子(本例存入数据库,但也包含存在硬盘上,是注释掉的代码部分)

写入数据库

//上传
if(myFile.ContentLength != 0)
{
  try
  {
    System.Web.HttpPostedFile myFile = this.Request.Files[0];
//        string tmpFileName = myFile.FileName;
//        string myFileName = tmpFileName.Substring(tmpFileName.LastIndexOf("."));
//        string myFileMimeType = myFile.ContentType();
//        myFile.SaveAs(this.Server.MapPath("../" + myFileName));

    //读取到数组里面
    System.IO.Stream mystream = myFile.InputStream;
    byte[] Buffer = new byte[myFile.ContentLength];
    mystream.Read(Buffer,0,myFile.ContentLength);

    //打开数据库
    OracleConnection cn = new OracleConnection(ConfigurationSettings.AppSettings["sysDSN"]);
    cn.Open();

    //用参数方式写入数据库
    OracleCommand myComm = cn.CreateCommand();
    string sql = "insert into tmp(tmp_id,tmp_blob) values(tmp_seq.nextval,:tmp_blob)";
    myComm.CommandText = sql;
    myComm.Parameters.Add(":tmp_blob",OracleType.Blob,Buffer.Length).Value = Buffer;
    myComm.ExecuteNonQuery();
  }
  catch
  {
    //此处可加错误显示
  }
  finally
  {        
    cn.Close();
  }
}


在页面中,放一个Image控件,在后台指定它的链接地址如下:
----------------------------------------------------------------------
//为方便,写一个固定ID号tmp_id=103
this.Image1.ImageUrl = "showimg.aspx?tmp_id=103" ;


下面是显示图片的页面showimg.aspx后台代码,该页面不需要放任何东西.
--------------------------------------------------------------------
//创建数据库连接
OracleConnection myConnection = new OracleConnection(ConfigurationSettings.AppSettings["sysDSN"]);
myConnection.Open();

//打开数据库
OracleCommand myCommand = myConnection.CreateCommand();
string sql = "select tmp_blob from tmp where tmp_id = 103";
myCommand.CommandText = sql;
OracleDataReader myRead = myCommand.ExecuteReader();

//开始读取
myRead.Read();
//这个方法更直接
Byte[] Buffer = (Byte[])myRead[0];
//OracleLob myLob = myRead.GetOracleLob(0);
//长度是long,转为int32
//int myLength = Convert.ToInt32(myLob.Length);  
//Byte[] Buffer = new byte[myLength];      
//myLob.Read(Buffer,0,myLength);

//输出
this.Response.Clear();
//输出mime类型,根据上传的文件取到的mimetype,是什么我忘记了,自己写上,不过不写也没有关系.
this.Response.ContentType = "";
this.Response.BinaryWrite(Buffer);
this.Response.End();
Korny 2005-06-13
  • 打赏
  • 举报
回复
比较全面的上传和下载文章
http://www.cnblogs.com/supercode/articles/173189.html

62,025

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧