我将 33.jpg 文件以二进制的形式保存到了sql数据库中
 再数据库中的类型喂 Image 类型
 现在想把他取出来 并且赋值给 string 类型 文件名不能变
 应该怎么实现  最好给出代码 谢谢了

解决方案 »

  1.   

    二进制存进去 好像就没有文件名了吧? 只是存了图片的二进制流。
    33.jpg信息存不进去
      

  2.   

    数据库弄多一个字段存文件名就可以了。。
    Image转string,转来干什么?
      

  3.   

    用string存路径代替直接存图片
      

  4.   


    string result =  Convert.ToBase64String(byte[]);
      

  5.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.IO;
    using System.Text;namespace Fire_Client.Enterprise_Info
    {
    /// <summary>
    /// image 的摘要说明。
    /// </summary>
    public class image : System.Web.UI.Page
    {
    protected System.Web.UI.HtmlControls.HtmlInputFile UP_FILE;
    protected System.Web.UI.WebControls.Button btnUp;
    protected System.Web.UI.WebControls.Label txtMessage;
    protected System.Web.UI.WebControls.TextBox txtImgName;
    protected System.Web.UI.WebControls.Panel pnlUp;
    protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    if((this.Request["id"]!=null)&&(this.Request["id"]!=""))
    {
    this.pnlUp.Visible=false;
    int index=int.Parse(this.Request["id"]);
    this.ShowImg(index);
    }
    else
    {
    this.pnlUp.Visible=true;
    }
    } #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.btnUp.Click += new System.EventHandler(this.btnUp_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion
    private void ShowImg(int id)
    {
    Fire_Client.dataAccess.DataAccess da=new Fire_Client.dataAccess.DataAccess();
    System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(dataAccess.DataAccess.cnString);
    try
    {
    System.Data.SqlClient.SqlCommand command = new System.Data.SqlClient.SqlCommand();
    command.Connection = conn;
    command.CommandText ="SELECT [tp] FROM [dwtpzl] WHERE [id]="+id+"";
    conn.Open();
    System.Data.SqlClient.SqlDataReader reader = command.ExecuteReader();
    while(reader.Read())
    {
    Response.OutputStream.Write((byte[])reader["tp"],0,((byte[])reader["tp"]).Length);
    }
    reader.Close();
    conn.Close();
    }
    catch{}
    }
    private void btnUp_Click(object sender, System.EventArgs e)
    {
    // HttpPostedFile对象,用于读取图象文件属性
    HttpPostedFile UpFile = UP_FILE.PostedFile;
    // FileLength 变量存储图片的字节大小
    int FileLength = UpFile.ContentLength;
    try
    {
    if (FileLength == 0)
    {
    txtMessage.Text = "<b>您未选择上传的文件</b>";
    }
    else
    {
    //取得文件名(抱括路径)
    string allName= UpFile.FileName;
    //取得文件名(抱括路径)里最后一个"."的索引
    int i= allName.LastIndexOf(".");
    //取得文件扩展名
    string extName =allName.Substring(i);
    if((extName.ToUpper()==".JPG")||(extName.ToUpper()==".BMP")||(extName.ToUpper()==".GIF"))
    {
    // 创建存储图片文件的临时 Byte 数组
    Byte[] FileByteArray = new Byte[FileLength];
    // 建立数据流对象
    Stream StreamObject = UpFile.InputStream;      
    // 读取图象文件数据,FileByteArray为数据储存体,0为数据指针位置、FileLnegth为数据长度
    StreamObject.Read(FileByteArray,0,FileLength);   
    // 数据库操作
    string strSQL = "INSERT INTO [dwtpzl](dwid,tpmc,kzlx,tp) VALUES (@dwid, @tpmc,@kzlx, @tp)";
    SqlCommand cmdAdd = new SqlCommand(strSQL, new SqlConnection(dataAccess.DataAccess.cnString));
    // 添加各项参数并赋值
    cmdAdd.Parameters.Add("@dwid", SqlDbType.Char, 10);
    cmdAdd.Parameters.Add("@tpmc", SqlDbType.VarChar, 50);
    cmdAdd.Parameters.Add("@kzlx", SqlDbType.VarChar, 50);
    cmdAdd.Parameters.Add("@tp", SqlDbType.Image);
    cmdAdd.Parameters["@dwid"].Value = Fire_Client.pubClass.CurrentUser.UserId;
    cmdAdd.Parameters["@tpmc"].Value =this.txtImgName.Text;
    extName=extName.Remove(0,1);
    cmdAdd.Parameters["@kzlx"].Value = extName.ToUpper();
    cmdAdd.Parameters["@tp"].Value = FileByteArray;
    // 执行数据库操作
    cmdAdd.Connection.Open();
    cmdAdd.ExecuteNonQuery();
    cmdAdd.Connection.Close();
    Response.Write("<script>alert('上传成功!');window.location='imgInfo.aspx';</script>");
    this.txtImgName.Text="";
    this.txtMessage.Text="";
    }
    else
    {
    Response.Write("<script language='javascript'>alert('对不起,你上传文件类型不正确\\r\\n上传类型必须是jpg、gif或bmp类型');</script>");
    }
    }

    catch (Exception ex) 
    {
    // 使用 Label 标签显示异常
    txtMessage.Text = ex.Message.ToString();
    }
    }
    }
    }
      

  6.   

    和使用XML文件放图片差不多的问题,这方面应该有专业的解决方案,曾经查找过相关内容;
      

  7.   

    转string 干嘛?图片放进去能转吗?