注册 登录
编程论坛 ASP.NET技术论坛

文件的上传

jflin 发布于 2007-03-26 20:30, 987 次点击

我的代码是这样写:
if(FileImage.PostedFile.FileName!="")
{

try
{
string sFileName=FileImage.PostedFile.FileName;
//查找最后一个"\" 的位置
int i=sFileName.LastIndexOf ("\\");
//取出文件名
string sName=sFileName.Substring (i+1);//

string savePath =Server.MapPath("../ProductImages") + "/" + sName; //生成保存的物理路径
if(System.IO .File.Exists(savePath))
{
lblMsg.Text="已有同名文件";
}
else
{
FileImage.PostedFile.SaveAs(savePath); //保存文件

}
}
catch
{
lblMsg.Text="上传文件失败";
}


在选择了文件之后,点上传按钮出现了如下问题:

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 49: private void Button1_ServerClick(object sender, System.EventArgs e)
行 50: {
行 51: if(FileImage.PostedFile.FileName!="")///红色字体显示
行 52: {
行 53:



请问应该怎么解决这个问题,谢谢

7 回复
#2
windstores2007-03-26 21:13

前台页面程序呢?吧其他程序都帖出来

#3
桂圆2007-03-26 22:18
[CODE]
if(IsPostBack)
{
Boolean fileOK = false;
String path = Server.MapPath("~/UploadedImages/");
if (FileUpload1.HasFile)
{
String fileExtension =
System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
String[] allowedExtensions =
{".gif", ".png", ".jpeg", ".jpg"};
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
}
}
}

if (fileOK)
{
try
{
FileUpload1.PostedFile.SaveAs(path
+ FileUpload1.FileName);
Label1.Text = "File uploaded!";
}
catch (Exception ex)
{
Label1.Text = "File could not be uploaded.";
}
}
else
{
Label1.Text = "Cannot accept files of this type.";
}
}


[/CODE]
#4
桂圆2007-03-26 22:18
记得要创建一个UploadedImages 文件夹
#5
jflin2007-03-27 10:05
照桂圆这样写提示下面的错误:
c:\inetpub\wwwroot\wangluo\upload.aspx.cs(57,9): error CS0117: “System.Web.UI.HtmlControls.HtmlInputFile”并不包含对“HasFile”的定义
c:\inetpub\wwwroot\wangluo\upload.aspx.cs(60,35): error CS0117: “System.Web.UI.HtmlControls.HtmlInputFile”并不包含对“FileName”的定义
c:\inetpub\wwwroot\wangluo\upload.aspx.cs(77,10): error CS0117: “System.Web.UI.HtmlControls.HtmlInputFile”并不包含对“FileName”的定义
#6
foshan2007-03-27 12:07

using System.IO;

#7
bygg2007-03-27 12:40
以下是引用jflin在2007-3-26 20:30:07的发言:

我的代码是这样写:
if(FileImage.PostedFile.FileName!="")
{

try
{
string sFileName=FileImage.PostedFile.FileName;
//查找最后一个"\" 的位置
int i=sFileName.LastIndexOf ("\\");
//取出文件名
string sName=sFileName.Substring (i+1);//

string savePath =Server.MapPath("../ProductImages") + "/" + sName; //生成保存的物理路径
if(System.IO .File.Exists(savePath))
{
lblMsg.Text="已有同名文件";
}
else
{
FileImage.PostedFile.SaveAs(savePath); //保存文件

}
}
catch
{
lblMsg.Text="上传文件失败";
}


在选择了文件之后,点上传按钮出现了如下问题:

未将对象引用设置到对象的实例。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。

源错误:


行 49: private void Button1_ServerClick(object sender, System.EventArgs e)
行 50: { //这个???
行 51: if(FileImage.PostedFile.FileName!="")///红色字体显示
行 52: {
行 53:



请问应该怎么解决这个问题,谢谢

#8
cyyu_ryh2007-03-27 12:53
这个可以实现

{
if (FileUpload1.PostedFile.ContentLength > 0)
{
string name = FileUpload1.FileName; //获取已经上传文件的名字.
string size = FileUpload1.PostedFile.ContentLength.ToString(); //获取已经上传文件的大小
string type = FileUpload1.PostedFile.ContentType; //获取文件MIME内容内型
string type1 = name.Substring(name.LastIndexOf(".") + 1);//得到文件后缀名
string ipath = Server.MapPath("upimg") + "\\" + name; //获取其它文件的实际路径
string fpath = Server.MapPath("upfile") + "\\" + name; //获取上传的文件的实际路径
string wpath = "upfile\\" + name;//获取写到数据库的虚拟路径
if (name.EndsWith(".exe") || name.EndsWith(".txt") || name.EndsWith(".xls") || name.EndsWith(".doc"))
{
FileUpload1.SaveAs(fpath); //将文件保存到fpath的这个路径里
Label1.Text = "你上传的文件名是:" + name + "<br>文件大小为:" + size + "字节<br>文件类型是:" + type + "<br>后缀名为:" + type1 + "<br>上传目标路径为:" + fpath + "<br>虚拟路径为:" + wpath + "<br>原文件路径:" + FileUpload1.PostedFile.FileName;
}
else
{
FileUpload1.SaveAs(ipath);
Label1.Text = "你上传的文件名是:" + name + "<br>文件大小为:" + size + "字节<br>文件类型是:" + type + "<br>后缀名为:" + type1 + "<br>上传目标路径为:" + ipath + "<br>虚拟路径为:" + wpath;
}
}
else
{
Label1.Text = "<script language='javascript'>alert('请选择你要上传的文件!');</script>";
return;
}
}
1