在写上传文件的程序时,老是遇到“未将对象引用设置到对象的实例错误”,请高手指点

telescope 2006-02-14 04:53:24
未将对象引用设置到对象的实例。
为什么老是遇到这个错误,并且这个错误老是出现在引用文件的那句话上,
如 filePath = this.Fileimg.PostedFile.FileName;
或 this.Fileimg.PostedFile.SaveAs(mPath+mFileName);
要怎么做才能解决?
...全文
480 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liupeng1981 2006-02-16
  • 打赏
  • 举报
回复
看看你的form 标记中 有没有encType="multipart/form-data"
<form id="Form1" method="post" encType="multipart/form-data" runat="server">
taiyang0717 2006-02-16
  • 打赏
  • 举报
回复
试试这个样子怎么样,我用这种方法很久了,上传一直没有问题
//upfile
private void Button_upfile_Click(object sender, System.EventArgs e)
{
//取代码 它是文件名的一部分
string uf_dep = tb_code.Text.ToString();
//取得代码对应的序号
OracleConnection myConnection = new OracleConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
myConnection.Open();
string sql_xh = "select xh from table_name where code='" + uf_dep.ToString() +"'";
OracleDataAdapter da_xh = new OracleDataAdapter(sql_xh,myConnection);
DataTable dt_xh = new DataTable();
da_xh.Fill(dt_xh);
if(dt_xh.Rows.Count<=0)
{
Label1.Text = "请先确定当前记录已存在前提下选择文件!";
return;
}
string uf_xh = dt_xh.Rows[0]["xh"].ToString().Trim();
//上传文件
string filePath="",fileExtName="",mFileName,mPath,mTime;
StringBuilder strMsg=new StringBuilder("<hr color=red>");
if(""!=fname.PostedFile.FileName) //获取文件在客户机上的文件的全名
{
//取得文件路径
filePath=fname.PostedFile.FileName;
//上传文件信息
mFileName=filePath.Substring(filePath.LastIndexOf("\\")+1);
fileExtName=filePath.Substring(filePath.LastIndexOf(".")+1);//一定注意LastIndexOf的用法可以替代原有的IndexOf的循环寻找
mTime=DateTime.Now.ToString("G");
// strMsg.Append("上传的文件类型:"+fname.PostedFile.ContentType.ToString()+"<br>");
// strMsg.Append("客户端文件地址:"+fname.PostedFile.FileName+"<br>");
// strMsg.Append("上传文件的文件名:"+mFileName+"<br>");
// strMsg.Append("上传文件的扩展名:"+fileExtName+"<br>");
strMsg.Append("上传时间:"+mTime);
//
if(fileExtName!="doc"&&fileExtName!="xls")
{
Label1.Text = "所选文件不符合上传文件类型,请重新选择!";
return;
}

try
{
//取得与Web服务器上的指定虚拟路径相对应的物理文件路径。
// mPath=Server.MapPath("文件夹名/");//"d:\\file\\upfile/"; //若用Server.MapPath就得用虚拟路径
mPath="d:\\file\\upfile/"; //Server.MapPath("upfile/");若用Server.MapPath就得用虚拟路径
if(!Directory.Exists(mPath))
{
Directory.CreateDirectory(mPath);
}
//保存上传文件到指定的目录
strState.Text=strMsg.ToString();

//上传的文件名 uf_dep和uf_xh都是要上传的文件名的一部分
mFileName=uf_dep +"_"+ uf_xh +"_"+ mFileName;

fname.PostedFile.SaveAs(mPath+mFileName);
lg_pop.Pop("上传完毕!",this.Page);

}//取得与Web服务器上的指定虚拟路径相对应的物理文件路径。
catch(Exception error)
{
Response.Write(error.ToString());
}
}
da_xh.Dispose();
myConnection.Close();
myConnection.Dispose();
}

wish you every success
Ivony 2006-02-16
  • 打赏
  • 举报
回复
不管你选没选,后台一定要判断,这是程序设计原则,先做了这一点,你才能谈下面的事情,才能去找错误出在哪里。
telescope 2006-02-16
  • 打赏
  • 举报
回复
要上传的文件在前页肯定已经选好了,但后台程序仍然出现这个提示,会是哪个环节出的问题呢?
itants 2006-02-16
  • 打赏
  • 举报
回复
出现这种错误,一般都是赋值没有赋上!跟踪看一下就可以了!
telescope 2006-02-16
  • 打赏
  • 举报
回复
<INPUT id="Img" style="Z-INDEX: 114; LEFT: 112px; WIDTH: 352px; POSITION: absolute; TOP: 240px; HEIGHT: 24px" type="file" size="39" name="Fileimg" runat="server">
问题找到了,第一,INPUT没有作为服务器运行,第二,后台用的是name属性来标识文件变量,而没有采用ID属性!!

谢谢楼上各位,给分!
Ivony 2006-02-14
  • 打赏
  • 举报
回复
没有上传文件,你先要判断是否有文件上传。

62,047

社区成员

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

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

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

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