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;(*****这个地址该怎么写?******)图片地址如何写才上传到数据库????谢谢...................
{
//上传文件
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;(*****这个地址该怎么写?******)图片地址如何写才上传到数据库????谢谢...................
解决方案 »
- 关于文本编辑器的问题
- 求助 C# WinForm 地理信息系统 给点建议 !!!!!
- 一个关于视图的问题!大侠来帮忙吧!
- 用户登录模块问题!!从前台界面输入用户名和密码如何与后台定义的类做比较,并成功验证登录进入系统!!
- 如何把读出来的记录分页 C#
- c#操作DBF数据库
- dataGrid中有若干行数据,有一个MouseUp事件可以得到点的行数,如果换了分辨率,即使双击标题栏使窗口最大化也可以触发MouseUp事件,请问怎么
- 不同语言操作系统下WinForm控件位置问题!!
- c#中调用datawindow打印报表问题,怎样预览,急!!
- SHDocVw.InternetExplorer找到浏览器后查找内容中某项并点击
- 在C#中访问oledb数据源需要安装什么特别的驱动吗?
- 为什么老是报错哦。。。
未将对象引用设置到对象的实例。
说明: 执行当前 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
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
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!到底是哪儿出错了呢?》?
<form id="DataGridShowImage" method="post" runat="server" enctype="multipart/form-data">
你在上传文件后获得文件名后,传递过去更新数据库。
--------------------------------------------------------------谢谢你耐心的解答//
我不太清楚怎么做,你能给我一段代码吗?
http://dotnet.aspx.cc/ShowDetail.aspx?id=9154BC99-DF64-4E2D-B096-26C99CE464BE
<form id="DataGridShowImage" method="post" runat="server" enctype="multipart/form-data">
-----------------------------------------------------
谢谢,你的文章我看过了,不过我想把图片地址传到数据库中.
你有好的方法吗?
你在这儿不是已经上传到服务器了吗,在这儿获得不就行了,然后直接用它操作数据库中即可。
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}
“/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
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>
/// <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
进群需有.NET开发经验
欢迎广大。NET开发者踊跃加入
进群需有.NET开发经验
欢迎广大。NET开发者踊跃加入
进群需有.NET开发经验
欢迎广大。NET开发者踊跃加入
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;
1:上传控件有问题,UploadFile取到的PostedFile为NULL,跟数据库无关
这个问题可以参考下net_lover(孟子E章) 的文章2:楼主有无可能选择的图片在C盘(系统盘),特别是桌面上的
这个问题是由于图片的长路径导致路径被截断而UploadFile取不到文件
这个可参考下http://www.cnblogs.com/Wang-Seraph/archive/2006/07/25/458832.html
www.24xuexi.com
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工作者提供交流平台,实现资源互补,共同进步!欢迎有开发经验者加入探讨!
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;
你的问题是出在动态创建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)
好了你尝试一下吧
2.添加属性
file2.attributes.add("id","file2")======================
可有可无
一不留神把file2写成了file1
dim file2 as new system.web.ui.htmlcotrols.htmlinputfile
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>";
}
}