if(uploadFile.PostedFile.FileName.Trim() != String.Empty && (Path.GetExtension(uploadFile.PostedFile.FileName)!=".gif" && Path.GetExtension(uploadFile.PostedFile.FileName)!=".jpg"))
            {
                Response.Write("<Script>alert('上传的图片格式必须为.gif或.jpg!!')</Script>");
                return;
            }
            if (FileUpload1.PostedFile.FileName.Trim() != String.Empty && (Path.GetExtension(FileUpload1.PostedFile.FileName) != ".rar" && Path.GetExtension(FileUpload1.PostedFile.FileName) != ".rar"))
            {
                Response.Write("<Script>alert('上传的图片格式必须为.rar或.rar!!')</Script>");
                return;
            } strName     = CleanString.htmlInputText( strName );
strBewrite  = CleanString.htmlInputText( strBewrite );
strUseMode  = CleanString.htmlInputText( strUseMode );
strValidity = CleanString.htmlInputText( strValidity );
string sql="insert into Products(PName,CID,PCPrice,PFPrice,PNPrice,PBewrite,PUseMode,PValidity) values('" + 
strName + "'," + strCID +  "," + strCPrice + "," + strFPrice + "," + 
strNPrice + ",'" + strBewrite + "','" + strUseMode + "','" + strValidity + "');";
sql += "select @@identity as 'identity';"; DBConn myDB = new DBConn();
SqlDataReader dr = myDB.getDataReader(sql);
dr.Read();
string strPID = dr["identity"].ToString();
dr.Close();
myDB.Close(); if ( uploadFile.PostedFile.FileName.Trim() != String.Empty )
{
//----------- update图片
Stream imagedatastream;
SqlConnection myConn=new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
imagedatastream = Request.Files["uploadFile"].InputStream ;
int imagedatalen = Request.Files["uploadFile"].ContentLength ;
string imagedatatype = Request.Files["uploadFile"].ContentType ; byte[] image = new byte[imagedatalen];
imagedatastream.Read(image,0,imagedatalen); String Psql="update Products set PPicture=@imgdata where PID=" + strPID; SqlCommand Pcommand=new SqlCommand(Psql,myConn); SqlParameter imgdata = new SqlParameter("@imgdata",SqlDbType.Image);
imgdata.Value=image;
Pcommand.Parameters.Add (imgdata); myConn.Open();
Pcommand.ExecuteReader();
myConn.Close();
//-----------
}
            if (FileUpload1.PostedFile.FileName.Trim() != String.Empty)
            {
                //----------- update压缩文件
                Stream imagedatastream;
                SqlConnection myConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
                imagedatastream = Request.Files["FileUpload1"].InputStream;
                int imagedatalen = Request.Files["FileUpload1"].ContentLength;
                string imagedatatype = Request.Files["FileUpload1"].ContentType;                byte[] image = new byte[imagedatalen];
                imagedatastream.Read(image, 0, imagedatalen);                String Psql = "update Products set rjUrl=@imgdata where PID=" + strPID;                SqlCommand Pcommand = new SqlCommand(Psql, myConn);                SqlParameter imgdata = new SqlParameter("@imgdata", SqlDbType.Image);
                imgdata.Value = image;
                Pcommand.Parameters.Add(imgdata);                myConn.Open();
                Pcommand.ExecuteReader();
                myConn.Close();
                //-----------
            }
要上传的是一个图片格式的文件
和一个RAR文件格式的压缩包。要求的是数据库能读取他们的地址例如:数据库表中:Administrator\桌面\Inetpub\456.jpg
Administrator\桌面\Inetpub\xiaox.rar
上面代码已经实现的是:图片可以传到数据库中但库中显示的地址为<Binary>。我想是设计数据类型为Image的原因。怎么改过来才能显示实地址这是第一个问题
第二。怎么才能上传.RAR文件。使数据库中能读到相应的地址。。
高手告诉我方法。100分双手奉上

解决方案 »

  1.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    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.Data.SqlClient;
    using System.Configuration;
    using System.IO;namespace SCard.admin
    {
    /// <summary>
    /// productAdd 的摘要说明。
    /// </summary>
    public partial class productAdd : System.Web.UI.Page
    {
            //protected System.Web.UI.WebControls.DropDownList ddlSales;

    protected void Page_Load(object sender, System.EventArgs e)
    {
                //权限检查
                if( Session["adminName"]==null || Session["adminName"].ToString() == String.Empty )
                {
                    Response.Write("<font color=#ff0000 style='FONT-SIZE: 12px'>对不起,您没足够权限访问此页!!</font><br>");
                    Response.Write("<a href=Default.aspx target=_top style='FONT-SIZE: 12px'>重新登陆</a><br>");
                    Response.End();
                    return;
                } if( !IsPostBack )
    {
                    getCategory();//绑定类别下拉列表
    //getSales();//绑定销售人下拉列表
    }
    }        private void getCategory()//绑定类别下拉列表
            {
                DBConn myDB = new DBConn();
    string sql="select * from Category";
    ddlCategory.DataSource  = myDB.getDataReader(sql);
    ddlCategory.DataTextField = "CName";
    ddlCategory.DataValueField = "CID";
    ddlCategory.DataBind();
                myDB.Close();
            }        /*
            private void getSales()//绑定销售人下拉列表
            {
                DBConn myDB = new DBConn();
                string sql="select * from Sales";
                ddlSales.DataSource  = myDB.getDataReader(sql);
                ddlSales.DataTextField = "SalesName";
                ddlSales.DataValueField = "SalesID";
                ddlSales.DataBind();
                myDB.Close();
            }
            */ #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {            }
    #endregion protected void btnAdd_Click(object sender, System.EventArgs e)
    {
    string strName = txtName.Text.Trim();
    string strCID = ddlCategory.SelectedValue;
                //string strSalesID = ddlSales.SelectedValue;
    string strCPrice = txtCPrice.Text.Trim();
    string strFPrice = txtFPrice.Text.Trim();
    string strNPrice = txtNPrice.Text.Trim();
    string strBewrite = txtBewrite.Text.Trim();
    string strUseMode = txtUseMode.Text.Trim();
    string strValidity = txtValidity.Text.Trim(); if( strName == String.Empty || strCPrice == String.Empty || strCID == String.Empty ||
                    strFPrice == String.Empty || strNPrice == String.Empty)
    {
    Response.Write("<script>");
    Response.Write("alert('必选项不能为空!!!');");
    Response.Write("</script>");
    return;
    }
    else if( strName.Length > 35 )
    {
    Response.Write("<script>");
    Response.Write("alert('输入商品名称太长了!!!');");
    Response.Write("</script>");
    return;
    }            try
                {
                    double.Parse(strCPrice);
                }
                catch
                {
                    Response.Write("<script>");
                    Response.Write("alert('请检查 成本价 的格式!!!');");
                    Response.Write("</script>");
                    return;
                }
                try
                {
                    double.Parse(strFPrice);
                }
                catch
                {
                    Response.Write("<script>");
                    Response.Write("alert('请检查 原价 的格式!!!');");
                    Response.Write("</script>");
                    return;
                }
                try
                {
                    double.Parse(strNPrice);
                }
                catch
                {
                    Response.Write("<script>");
                    Response.Write("alert('请检查 现价 的格式!!!');");
                    Response.Write("</script>");
                    return;
                }
      

  2.   

    if(uploadFile.PostedFile.FileName.Trim() != String.Empty && (Path.GetExtension(uploadFile.PostedFile.FileName)!=".gif" && Path.GetExtension(uploadFile.PostedFile.FileName)!=".jpg"))
                {
                    Response.Write("<Script>alert('上传的图片格式必须为.gif或.jpg!!')</Script>");
                    return;
                }
                if (FileUpload1.PostedFile.FileName.Trim() != String.Empty && (Path.GetExtension(FileUpload1.PostedFile.FileName) != ".rar" && Path.GetExtension(FileUpload1.PostedFile.FileName) != ".rar"))
                {
                    Response.Write("<Script>alert('上传的图片格式必须为.rar或.rar!!')</Script>");
                    return;
                } strName     = CleanString.htmlInputText( strName );
    strBewrite  = CleanString.htmlInputText( strBewrite );
    strUseMode  = CleanString.htmlInputText( strUseMode );
    strValidity = CleanString.htmlInputText( strValidity );
    string sql="insert into Products(PName,CID,PCPrice,PFPrice,PNPrice,PBewrite,PUseMode,PValidity) values('" + 
    strName + "'," + strCID +  "," + strCPrice + "," + strFPrice + "," + 
    strNPrice + ",'" + strBewrite + "','" + strUseMode + "','" + strValidity + "');";
    sql += "select @@identity as 'identity';"; DBConn myDB = new DBConn();
    SqlDataReader dr = myDB.getDataReader(sql);
    dr.Read();
    string strPID = dr["identity"].ToString();
    dr.Close();
    myDB.Close(); if ( uploadFile.PostedFile.FileName.Trim() != String.Empty )
    {
    //----------- update图片
    Stream imagedatastream;
    SqlConnection myConn=new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
    imagedatastream = Request.Files["uploadFile"].InputStream ;
    int imagedatalen = Request.Files["uploadFile"].ContentLength ;
    string imagedatatype = Request.Files["uploadFile"].ContentType ; byte[] image = new byte[imagedatalen];
    imagedatastream.Read(image,0,imagedatalen); String Psql="update Products set PPicture=@imgdata where PID=" + strPID; SqlCommand Pcommand=new SqlCommand(Psql,myConn); SqlParameter imgdata = new SqlParameter("@imgdata",SqlDbType.Image);
    imgdata.Value=image;
    Pcommand.Parameters.Add (imgdata); myConn.Open();
    Pcommand.ExecuteReader();
    myConn.Close();
    //-----------
    }
                if (FileUpload1.PostedFile.FileName.Trim() != String.Empty)
                {
                    //----------- update压缩文件
                    Stream imagedatastream;
                    SqlConnection myConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnStr"]);
                    imagedatastream = Request.Files["FileUpload1"].InputStream;
                    int imagedatalen = Request.Files["FileUpload1"].ContentLength;
                    string imagedatatype = Request.Files["FileUpload1"].ContentType;                byte[] image = new byte[imagedatalen];
                    imagedatastream.Read(image, 0, imagedatalen);                String Psql = "update Products set rjUrl=@imgdata where PID=" + strPID;                SqlCommand Pcommand = new SqlCommand(Psql, myConn);                SqlParameter imgdata = new SqlParameter("@imgdata", SqlDbType.Image);
                    imgdata.Value = image;
                    Pcommand.Parameters.Add(imgdata);                myConn.Open();
                    Pcommand.ExecuteReader();
                    myConn.Close();
                    //-----------
                }            //==
                txtName.Text = "";
                txtCPrice.Text = "";
                txtFPrice.Text = "";
                txtNPrice.Text = "";
                txtBewrite.Text = "";
                txtUseMode.Text = "";
                txtValidity.Text = "";
                ddlCategory.SelectedIndex = 0;
                //==            Response.Write("<script>");
                Response.Write("alert('成功添加!!!');");
                Response.Write("</script>");

    }        protected void btnReset_Click(object sender, System.EventArgs e)
            {
                txtName.Text = "";
        txtCPrice.Text = "";
        txtFPrice.Text = "";
        txtNPrice.Text = "";
        txtBewrite.Text = "";
        txtUseMode.Text = "";
        txtValidity.Text = "";
        ddlCategory.SelectedIndex = 0;
            }
    }
    }
    这是这个页面的全部代码
      

  3.   

    用个varchar类型的字段,保存你的文件路径就行了FileUpload1.PostedFile.FileName
      

  4.   

    FileUpload1.PostedFile.FileName这是本地路径,你需要自己定义一个服务器中文件夹地址.然后写到数据库中才有意义
      

  5.   

    在服务器上建一文件夹,例如uploadFiles
    string strfilepath= Server.MapPath("../uploadFiles" + @"\");
    string filename = "your file name";
    string extension = System.IO.Path.GetExtension(this.uploadFile.PostedFile.FileName);
    string filepath = strfilepath+filename+extension;
    uploadFile.PostedFile.SaveAs(filePath);数据库里地址字段存filepath
      

  6.   

    用个varchar类型的字段,保存你的文件路径就行了
      

  7.   

    如果你的数据中是image类型的话.是不显示地址的!!他以数据流的形式存储!如果你只是为了存储路径,就不要用image类型!还有你保存文件到服务器用file.saveas("服务器路径")就可以了!!!
      

  8.   

    这么搞得这么复杂啊HttpPostedFile hPostedFile = fileList[i];
                    if (hPostedFile.ContentLength > 0)
                    {
                        string fileName;
                        fileName = Path.GetFileName(hPostedFile.FileName.Trim().Replace(" ", ""));
                        string fileLastName = fileName.Substring(fileName.IndexOf('.'));///获取文件后缀名
                        if (File.Exists(Server.MapPath(mapPath + fileName)))
                        {
                            Message.MsgBoxSelfClasss.MsgBox(fileName + " 已存在,请先删除再上传!");
                            return;
                        }
                        else
                        {
                            if (fileName != null)
                            {
                                hPostedFile.SaveAs(Server.MapPath(mapPath + fileName));
                            }
                        }
                    }
      

  9.   

    都不看代码怎么就知道我要的是什么效果呢~~~你们所说的用在我这你没看就不能用啊。我也知道大家的想法。你们想的是下面的代码吧:
            if ((Desn.Text.Trim() != "") && (FileUpload1.PostedFile.ContentLength > 0))
            {
                String fileName = FileUpload1.PostedFile.FileName.Substring(FileUpload1.PostedFile.FileName.LastIndexOf("\\"),
                    FileUpload1.PostedFile.FileName.Length - FileUpload1.PostedFile.FileName.LastIndexOf("\\"));            String fileTime = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
                    + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString()
                    + DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString()
                    + DateTime.Now.Millisecond.ToString();            fileName = "\\" + fileTime + GetRandomint() + fileName.Substring(fileName.IndexOf("."), fileName.Length - fileName.IndexOf("."));
                string sFileName = Server.MapPath(Request.ApplicationPath) + "\\Pictures" + fileName;            if (File.Exists(sFileName) == false)
                {
                    try
                    {
                        //把文件存入磁盘,如果失败,导向提示页面
                        FileUpload1.PostedFile.SaveAs(sFileName);
                        return ("\\Pictures" + fileName);
                    }
                    catch (Exception ex)
                    {
                        string sRawURL = Request.RawUrl;                    if (sRawURL.IndexOf("?") > -1)
                        {
                            sRawURL = sRawURL.Substring(0, sRawURL.IndexOf("?"));
                        }
                        Response.Redirect("~/DesktopModules/ErrorPage.aspx?ErrorUrl=" + sRawURL + "&ErrorMessage=" + ex.Message.Replace("\n", " "));
                    }
                }
                else
                {
                    Response.Write("<script>alert(\"你上传的文件已经存在!\")</script>");
                }
            }
            else
            {
                Response.Write("<script>alert(\"你输入的文件描述\\文件名为空,请重新输入!\")</script>");
            }        return ("");
        }
    但我用我这就不行啊
      

  10.   

    一\不要把文件放进数据库,会很慢!放在一个文件夹,然后数据库放路径
    二\使用流;
    三\rar和图片格式对流来说是一样的
      

  11.   

    一\建一个文件夹,把文件上传到文件夹
    二\数据库记录文件的存放位置
    三\rar啊。exe啊。什么都一样的,病毒文件也是一样的
      

  12.   

    相应的地址是你程序指定的,FileUpload1.PostedFile.SaveAs(SeverPath//你想要保存文件的路径);
      

  13.   

    不要把文件放进数据库,建立一个文件夹,然后数据库放路径。
    图片能读的话rar 同样能读用流的方式
      

  14.   

    代码难读!
    但是问题不是很难!///获取上载文件的列表
    HttpFileCollection fileList = HttpContext.Current.Request.Files;
    ///定义显示的消息
    StringBuilder uploadMsg = new StringBuilder("上载的文件如下:" + "<br>");
    IDisk disk = new Disk();
    try
    { ///上载文件列表中的每一个文件
    for(int i = 0; i < fileList.Count; i++)
    { ///获取当前上载的文件
    HttpPostedFile hPostedFile = fileList[i];
    string fileName;
    ///获取上载文件的文件名称
    fileName = Path.GetFileName(hPostedFile.FileName);
    if(fileName != null)
    { ///上载文件
    hPostedFile.SaveAs(MapPath("UploadFile/") + fileName);
    ///添加文件到数据库中
                        disk.AddFile(fileName, nParentID, hPostedFile.ContentLength, "UploadFile/" + fileName, hPostedFile.ContentType);
    uploadMsg.Append("文件名称:" + fileName + "<br>");
    }
    }
    ///显示上载文件的操作成功消息
    StatusMsg.Text = uploadMsg.ToString();
    }
    catch(Exception ex)
    {
    ///显示上载文件的操作失败消息
    StatusMsg.Text = ex.Message;
      

  15.   

    哎~~   假如楼主在网站根目录下建一文件夹名字叫"UploadPic",然后把上传的文件保存到这个文件夹下,文件名叫"1.rar",那么数据库中搞个字段(nvarcha)记录"/UploadPic/1.rar",以后要用到这个文件地址的时候不就直接到数据库中查就好了么。又或者再加一字段(image)把文件流存进来,以后要用的时候也可以直接从数据库中输出文件了啊。