if(UploadFile.PostedFile.FileName.Trim()!="") 
  { 
   //上传文件 
    extension = Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper(); 
    file_Name = DateTime.Now.ToString("yyyyMMddhhmmss"); 
    path = Server.MapPath("") + "/UpImage/" + file_Name + extension; 
    UploadFile.PostedFile.SaveAs(path); 
  } string insertCmd="insert into yiji3 values(@title,@imgURL)";
 SqlCommand myCommand=new SqlCommand(insertCmd,myConnection);
 myCommand.Parameters.Add(new SqlParameter("@title",SqlDbType.NVarChar,16));
 myCommand.Parameters["@title"].Value=TextBox1.Text;
 
myCommand.Parameters.Add(new SqlParameter("@imgURL",SqlDbType.NVarChar,16));
 myCommand.Parameters["@imgURL"].Value=path;(*****这个地址该怎么写?******)图片地址如何写才上传到数据库????谢谢...................

解决方案 »

  1.   

    如果你写的是服务器地址的话,用UpImage/" + file_Name + extension这部分即可。
      

  2.   

    myCommand.Parameters["@imgURL"].Value="UpImage/" + file_Name + extension;报错:
    未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 72:  string extension,file_Name,path;
    行 73: 
    行 74:  if(UploadFile.PostedFile.FileName.Trim()!="") 
    行 75:  { 
    行 76:  //上传文件 源文件: e:\asp.net网站\ex1\data_pic.aspx.cs    行: 74 
      

  3.   

    其次查看一下"UpImage/" + file_Name + extension是否正确。
      

  4.   

    你没有选择上传的文件吧,加一个TRY CATCH 捕捉一下
      

  5.   

    我又简化了一下:string extension;
    extension = Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper(); string insertCmd="insert into yiji3 values(@title,@imgURL)";
    SqlCommand myCommand=new SqlCommand(insertCmd,myConnection);
    myCommand.Parameters.Add(new SqlParameter("@title",SqlDbType.NVarChar,16));
    myCommand.Parameters["@title"].Value=TextBox1.Text;
    myCommand.Parameters.Add(new SqlParameter("@imgURL",SqlDbType.NVarChar,16));
    myCommand.Parameters["@imgURL"].Value="UpImage/" +UploadFile.PostedFile.FileName+extension;可是还是不行。“/ex1”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 72:  string extension;
    行 73: 
    行 74:             extension = Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper(); 
    行 75: 
    行 76: 
     源文件: e:\asp.net网站\ex1\data_pic.aspx.cs    行: 74 
      

  6.   

    只写这个,还是不行。
    myCommand.Parameters["@imgURL"].Value="UpImage" +"/"+UploadFile.PostedFile.FileName;
    “/ex1”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 79: 
    行 80:  myCommand.Parameters.Add(new SqlParameter("@abc",SqlDbType.NVarChar,16));
    行 81:  myCommand.Parameters["@abc"].Value="UpImage" +"/"+UploadFile.PostedFile.FileName;
    行 82: 
    行 83: 
     源文件: e:\asp.net网站\ex1\data_pic.aspx.cs    行: 81 堆栈跟踪: 
    [NullReferenceException: 未将对象引用设置到对象的实例。]
       ex1.data_pic.Button1_Click(Object sender, EventArgs e) in e:\asp.net网站\ex1\data_pic.aspx.cs:81
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
       System.Web.UI.Page.ProcessRequestMain() +1277 
    **********************************************************
    my god!到底是哪儿出错了呢?》?
      

  7.   

    看你的提示,好像是postedfile是无效的,你单步跟踪一下,查看一下其是否有效。
      

  8.   

    myCommand.Parameters["@abc"].Value="abc"; 我写成这样的形式,就能将数据存到数据库中.看来是postedfile无效...怎么做才能让其有效呢?
      

  9.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=9154BC99-DF64-4E2D-B096-26C99CE464BE
    <form id="DataGridShowImage" method="post" runat="server" enctype="multipart/form-data">
      

  10.   

    Knight94(愚翁) ( ) 信誉:110  2006-07-18 16:23:00  得分: 0  
     
     
       你在上传文件后获得文件名后,传递过去更新数据库。
      --------------------------------------------------------------谢谢你耐心的解答//
    我不太清楚怎么做,你能给我一段代码吗?
     
      

  11.   

    net_lover(孟子E章) ( ) 信誉:140  2006-07-18 16:24:00  得分: 0  
     
     
       http://dotnet.aspx.cc/ShowDetail.aspx?id=9154BC99-DF64-4E2D-B096-26C99CE464BE
    <form id="DataGridShowImage" method="post" runat="server" enctype="multipart/form-data">
    -----------------------------------------------------
    谢谢,你的文章我看过了,不过我想把图片地址传到数据库中.
    你有好的方法吗? 
     
      

  12.   

    你不都保存了吗?if(UploadFile.PostedFile.FileName.Trim()!="") 
    你在这儿不是已经上传到服务器了吗,在这儿获得不就行了,然后直接用它操作数据库中即可。
      

  13.   

    Knight94:你就好人做到底,写一段完整的代码给我吧.谢谢...
      

  14.   

    Sample code as follows:
    if(UploadFile.PostedFile.FileName.Trim()!="")
    {
    //上传文件
    string strFileName = DateTime.Now.ToString("yyyyMMddhhmmss") + "."+Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper();
    string strFullName = Server.MapPath("") + "/UpImage/" + strFileName ;
    UploadFile.PostedFile.SaveAs( strFullName ); string insertCmd="insert into yiji3 values(@title,@imgURL)";
    SqlCommand myCommand=new SqlCommand(insertCmd,myConnection);
    myCommand.Parameters.Add(new SqlParameter("@title",SqlDbType.NVarChar,16));
    myCommand.Parameters["@title"].Value=TextBox1.Text; myCommand.Parameters.Add(new SqlParameter("@imgURL",SqlDbType.NVarChar,16));
    myCommand.Parameters["@imgURL"].Value= "/UpImage/" + strFileName ; //Use command to update DB}
      

  15.   

    不过你的imgURL字段长度给得太短,修改数据库,把它设长一些
      

  16.   

    我已经处于崩溃边缘了...我把imgURL字段长度都设成500了,还是错错错啊..
    “/ex1”应用程序中的服务器错误。
    --------------------------------------------------------------------------------未将对象引用设置到对象的实例。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。源错误: 
    行 70:  public void Button1_Click(object sender, System.EventArgs e)
    行 71:  { 
    行 72:  if(UploadFile.PostedFile.FileName.Trim()!="")
    行 73:  {
    行 74:  //上传文件
     源文件: e:\asp.net网站\ex1\data_pic.aspx.cs    行: 72 堆栈跟踪: 
    [NullReferenceException: 未将对象引用设置到对象的实例。]
       ex1.data_pic.Button1_Click(Object sender, EventArgs e) in e:\asp.net网站\ex1\data_pic.aspx.cs:72
       System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
       System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
       System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
       System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
       System.Web.UI.Page.ProcessRequestMain() +1277
      

  17.   

    怎么看也不关写入数据库的事儿。明明是
    UploadFile.PostedFile.FileName.Trim()!=""
    这个抛出了null引用异常。
    也就是说问题出在上传那里。你这个UploadFile是不是HTML服务器控件称?
    有没有加runat="server"标识?我作了一个简单的aspx页面测试,即使不上传任何文件也不会抛出NullReferenceException。你参考一下吧。
    <%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Upload Test</title>
    <script runat="server">
    void btnUpload_Click(object sender,EventArgs arg){
    Response.Write(UploadFile.PostedFile.FileName.Trim());
    }
    </script>
    </head>
    <body>
    <form id="form1" name="form1" runat="server">
      <input type="file" id="UploadFile" runat="server" />
      <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" />
    </form>
    </body>
    </html>
      

  18.   

    估计是还是这个fileUp控件的问题,帖下页面代码可能会更清楚点
      

  19.   

    http://www.cnblogs.com/gwazy/archive/2006/07/06/444503.html
      

  20.   

    #region 处理邮件附件上传操作,传回附件数组
    /// <summary>
    /// 处理上传操作,附件以链接形式存放
    /// </summary>
    /// <param name="MailReceiverStr"> 用户登陆名字符串,用逗号隔开 </param>
    private ArrayList AttUpload(string MailReceiverStr)
    {
    HtmlForm FrmCompose   = (HtmlForm)this.Page.FindControl("Compose");
    string[] RecvIdAr     = System.Text.RegularExpressions.Regex.Split(MailReceiverStr ,",");
    ArrayList listattfile = new ArrayList();
    // 存放附件至发件人目录中,随机生成目录名
    Random TempNameInt    = new Random(); 
    string NewMailDirName = TempNameInt.Next(100000000).ToString();
    string FileName       = "";
    try
    {
    if(!Directory.Exists(Server.MapPath(".")+"\\AttachFiles\\"+Username))
    Directory.CreateDirectory(Server.MapPath(".")+"\\AttachFiles\\"+Username);

    Directory.CreateDirectory(Server.MapPath(".")+"\\AttachFiles\\"+Username+"\\"+NewMailDirName);
    for (int i=0;i<FrmCompose.Controls.Count;i++)
    {
    if(FrmCompose.Controls [i].GetType().ToString()=="System.Web.UI.HtmlControls.HtmlInputFile")
    {
    HtmlInputFile hif = ((HtmlInputFile)(FrmCompose.Controls[i]));
    if(hif.PostedFile.FileName.Trim()!="")
    {
    FileName = System.IO .Path.GetFileName(hif.PostedFile.FileName);
    UDS.Components.MailAttachFile att = new MailAttachFile();
    // 初始化
    att.FileAttribute  = 0;
    att.FileSize       = hif.PostedFile.ContentLength;
    att.FileName    = FileName;
    att.FileAuthor     = Username;
    att.FileCatlog     = "邮件";
    att.FileVisualPath = "\\AttachFiles\\"+Username+"\\"+NewMailDirName+"\\"+FileName;
    hif.PostedFile.SaveAs(Server.MapPath(".")+"\\AttachFiles\\"+Username+"\\"+NewMailDirName+"\\"+FileName);
    listattfile.Add(att);
    }
    hif=null;
    }
    }

    }
    catch(Exception ioex)
    {
    UDS.Components.Error.Log(ioex.ToString());
    Server.Transfer("../../Error.aspx");
    }
    return listattfile;
                
    }
    #endregion
      

  21.   

    .NET-Club-9  (20152522)!.NET开发俱乐部仅提供开发交流平台,实现资源互补,共同进步!谢绝聊天!
    进群需有.NET开发经验
    欢迎广大。NET开发者踊跃加入
      

  22.   

    .NET-Club-9  (20152522)!.NET开发俱乐部仅提供开发交流平台,实现资源互补,共同进步!谢绝聊天!
    进群需有.NET开发经验
    欢迎广大。NET开发者踊跃加入
      

  23.   

    .NET-Club-9  (20152522)!.NET开发俱乐部仅提供开发交流平台,实现资源互补,共同进步!谢绝聊天!
    进群需有.NET开发经验
    欢迎广大。NET开发者踊跃加入
      

  24.   

    想在 苏锡常 地区做电子商务网站或网上商场的开发人员请注意: 本人有以下三个Shop 系列国际.com域名,如需要,请和我联系。 Shop0512.com  Shop0510.com  Shop0519.com 详细价格请访问本人主页: http://www.oYahoo.com.cn
      

  25.   

    string filename = this.File1.PostedFile.FileName;//filename返回的是完整的路径
    string extend = filename.Substring(filename.LastIndexOf('.'));//返回的是.+扩展名
    string spath = this.Server.MapPath("upl");//返回upl的路径
    string fname = DateTime.Now.ToShortDateString();//文件名
    string save = spath + fname + extend;//保存在服务器上的路径
    this.File1.PostedFile.SaveAs(save);//保存
    //插入数据库只要把它的相对路径给数据库就可以了 比如  @"upl\"+fname+extend;
      

  26.   

    http://dotnet.aspx.cc/ShowDetail.aspx?id=2A5DD7C6-A45A-48AB-A2E8-342A29F17506
      

  27.   


    1:上传控件有问题,UploadFile取到的PostedFile为NULL,跟数据库无关
    这个问题可以参考下net_lover(孟子E章) 的文章2:楼主有无可能选择的图片在C盘(系统盘),特别是桌面上的
    这个问题是由于图片的长路径导致路径被截断而UploadFile取不到文件
    这个可参考下http://www.cnblogs.com/Wang-Seraph/archive/2006/07/25/458832.html
      

  28.   

    你去这个网站看看吧,我一下也说不好,说不定这个网站可能帮助你呢
         www.24xuexi.com
      

  29.   

    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    v20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!vv20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
    20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!20152522    .NET开发俱乐部给IT工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
      

  30.   

    string imgURL=string.Empty;
    if(UploadFile.PostedFile.FileName.Trim()!="") 
      { 
       //上传文件 
        extension = Path.GetExtension(UploadFile.PostedFile.FileName).ToUpper(); 
        file_Name = DateTime.Now.ToString("yyyyMMddhhmmss"); 
        imgURL="/UpImage/" + file_Name + extension;
        path = Server.MapPath(imgURL); 
        UploadFile.PostedFile.SaveAs(path); 
      } string insertCmd="insert into yiji3 values(@title,@imgURL)";
     SqlCommand myCommand=new SqlCommand(insertCmd,myConnection);
     myCommand.Parameters.Add(new SqlParameter("@title",SqlDbType.NVarChar,16));
     myCommand.Parameters["@title"].Value=TextBox1.Text;
     
    myCommand.Parameters.Add(new SqlParameter("@imgURL",SqlDbType.NVarChar,16));
     myCommand.Parameters["@imgURL"].Value=imgURL;
      

  31.   

    asp.net里“/”好像是得写成“//”我记不太清了,你搜一搜这方面,再看看楼上的代码吧
      

  32.   

    以下内容仅供参考:
    你的问题是出在动态创建WEB控件
    动态创建WEB控件不能用response.write,我用VB写给你,你自己翻译
    1.首先定义一个控件对象
    dim file1 as new system.web.ui.htmlcotrols.htmlinputfile
    注意这个NEW
    2.添加属性
    file2.attributes.add("id","file2")
    3.把他生成到其他控件中,我这里是form1中
    me.findcontrol("form1").controls.add(file2)
    好了你尝试一下吧
      

  33.   

    补充:
    2.添加属性
    file2.attributes.add("id","file2")======================
    可有可无
      

  34.   

    补充:
    一不留神把file2写成了file1
    dim file2 as new system.web.ui.htmlcotrols.htmlinputfile
      

  35.   

    //图片地址
    protected string imagePath;
    //图片类型
    protected string imageType;
    //图片名称
    protected string imageName;
    Literal le =new Literal();
    this.Controls.Add(le);
    string sql;
    if(file1.PostedFile.FileName=="")
    {
    le.Text="<script language='javascript'> alert('请选择图片路径');</script>";
    return;
    }
    else
    {
    Stream imgdatastream = file1.PostedFile.InputStream; 
    imagePath= file1.PostedFile.FileName;
    //取得图片类型
    imageType= imagePath.Substring(imagePath.LastIndexOf(".")+1);
    if(imageType.ToLower()=="jpg"||imageType.ToLower()=="gif"||imageType.ToLower()=="bmp")
    {
    //取得图片名称
    imageName = imagePath.Substring(imagePath.LastIndexOf("\\")+1);
    //取得图片大小
    imagelength=file1.PostedFile.ContentLength;
    byte[] imgdata = new byte[imagelength]; 
    int n = imgdatastream.Read(imgdata,0,imagelength); 
    string ConnStr = System.Configuration.ConfigurationSettings.AppSettings["ConnString"];
    sql="update user_list set user_image=@image_data,user_image_type=@image_type where user_id='"+c_UserName.Trim()+"'";
    SqlCommand myCommand = new SqlCommand(sql, new SqlConnection(ConnStr));
    myCommand.Parameters.Add("@image_data", SqlDbType.Image);
    myCommand.Parameters.Add("@image_type", SqlDbType.VarChar, 50);
    myCommand.Parameters["@image_data"].Value = imgdata;
    myCommand.Parameters["@image_type"].Value =imageType ;
    myCommand.Connection.Open();
    myCommand.ExecuteNonQuery();
                        myCommand.Dispose();
    myCommand.Connection.Close();         
    le.Text="<script language=javascript>alert('上传成功');location.href='person_data.aspx';</script>";
    }
    else
    {
                       le.Text="<script language=javascript>alert('不是有效的图片格式,请重新上传');</script>";
    }

                    
    }