上传文件,我一开始的实现方法如下:
private void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text = "FileName ";
Label2.Text = "扩展名 ";
string FileName = "";
string ExtName = "";
HtmlForm FrmDG2E = (HtmlForm)this.Page.FindControl("Form1");
if(!Directory.Exists(Server.MapPath(".")+"\\TempExcel"))
{
Directory.CreateDirectory(Server.MapPath(".")+"\\TempExcel");
}
Directory.CreateDirectory(Server.MapPath(".")+"\\TempExcel\\");
for(int i=0;i<FrmDG2E.Controls.Count;i++)
{
if(FrmDG2E.Controls[i].GetType().ToString()== "System.Web.UI.HtmlControls.HtmlInputFile")
{
HtmlInputFile hif = ((HtmlInputFile)(FrmDG2E.Controls[i]));
if(hif.PostedFile.FileName.Trim()!="")
{
FileName = System.IO.Path.GetFileName(hif.PostedFile.FileName);
ExtName = System.IO.Path.GetExtension(hif.PostedFile.FileName);
hif.PostedFile.SaveAs(Server.MapPath(".")+"\\TempExcel\\"+FileName);
Label1.Text = Label1.Text + FileName ;
Label2.Text = Label2.Text + ExtName ;
}
}
}
}工作正常,结果我很满意,可后来我成了如下实现方法,就不能用了
private void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text = "FileName ";
Label2.Text = "扩展名 ";
string FileName = "";
string ExtName = "";
string strFileName = this.upfile.Value;
if(strFileName == "")
{
Response.Write("<script language=javascript>alert('出现错误,原因:请先选择文件!');</script>");
}
else
{
ExtName = System.IO.Path.GetExtension(strFileName);
if(ExtName.ToLower() != ".xls")
{
Response.Write("<script language=javascript>alert('出现错误,原因:文件不是Excel文件!');</script>");
}
else
{
if(!Directory.Exists(Server.MapPath(".")+"\\TempExcel"))
{
Directory.CreateDirectory(Server.MapPath(".")+"\\TempExcel");
}
try
{
FileName = System.IO.Path.GetFileName(strFileName);
ExtName = System.IO.Path.GetExtension(strFileName);
Label1.Text = Label1.Text + FileName ;
Label2.Text = Label2.Text + ExtName ;
this.upfile.PostedFile.SaveAs(Server.MapPath("..")+"\\TempExcel");
}
catch(Exception e2)
{
Response.Write("<script language=javascript>alert('上传不成功');</script>");
Label1.Text = "出现错误   " + e2.Message;
}
}
}
}上面第二种实现方法的错误提示是:对C:\Inetpub\wwwroot\TempTest\TempExcel的访问被拒绝
请问各位,我的问题出在哪儿了???
谢谢各位了,请帮帮忙

解决方案 »

  1.   

    你应该在操作系统中对这个文件进行asp.net的读写授权,在2000server系统中,可以通过直接添加读写控制实现。
      

  2.   

    this.upfile.PostedFile.SaveAs(Server.MapPath("..")+"\\TempExcel");
    小弟认为我得错误就是上句
    当我把Server.MapPath中的两个点号去掉一个后,即变成下句:
    this.upfile.PostedFile.SaveAs(Server.MapPath(".")+"\\TempExcel");
    提示就是:对C:\Inetpub\wwwroot\TempTest\TempExcel的访问被拒绝。可当我变成两个点号时,什么问题都不提示
    我得两个Label中显示的也是我所期望的信息,可文件却没有出现在TempExcel,也就是说,文件夹创建了,可文件并没有复制过去。
      

  3.   

    navalsun(子夜):谢谢你的回复。非常感谢。
    我想问以下两个问题
    1、我该如何在操作系统中设置你说的内容?
    2、如果我的系统不能自动实现这样的设置,那用户不也就得这样做了么?那么我认为这个系统就算失败了
    3、第一种实现可以正常地完成我的任务,可为什么第二种就不行了呢?