使用FileUpload1来上传文件,问题是当文件已存在时,怎么弹出“文件已存在,是否覆盖”对话框。而且不是窗体模式,不能用messagebox。代码如下:
源代码:
<asp:FileUpload ID="FileUpload1" runat="server" BackColor="White" />
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="../Images/button/shangchuan.jpg" OnClick="ImageButton2_Click" /> //上传按钮
加上一个gridview, ID为"gv_xmztw1" 
.cs中
 protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
    {
        ZTBFJK ztbfjk = new ZTBFJK();
        ztbfjk.XMWYH = Request.QueryString["gs_xmxxlb"].ToString();
        XmXxLb xmxxlb = gs_xmxxlb.GetOneXmXmLb(ztbfjk.XMWYH);
        ztbfjk.XMZT = Convert.ToInt32(xmxxlb.XMZTBH);//插入时为数字
        string fileName = ztbfjk.XMWYH + FileUpload1.FileName;
        ztbfjk.WJMC = fileName;
        ztbfjk.SZR = "000001";
        ztbfjk.WJLJ = "~/File/" + fileName;
        ztbfjk.SCRQ = DateTime.Now;
        FileInfo fi = new FileInfo(Server.MapPath("../File/" + fileName));
        if (fi.Exists)//如果文件存在
        {
            //如果存在,弹出是否覆盖代码
            ???????????????????????????这里不会写
            
        }
        else
        {
            bool re = gs_xmxxlb.addZtbfjkList(ztbfjk);
            if (re)
            {
                string savePath = Server.MapPath(ztbfjk.WJLJ);
                FileUpload1.SaveAs(savePath);
                Response.Write("<script>alert('添加成功');window.location.href=window.location.href;</script>");
            }
            else
            {
                Response.Write("<script>alert('注册失败');window.location.href=window.location.href;</script>");
            }
        }
   }

解决方案 »

  1.   

    Response.Write("<script>confirm(是否覆盖....);</script>");
      

  2.   

    Response.Write("<script>confirm(是否覆盖....);</script>");
    这句不行
      

  3.   

    因为我这是做的是网页类的,它会跟using System.Web.UI.WebControls;这个命名空间有冲突
      

  4.   

    。无语。MessageBox是System.Windows.Forms这个命名空间下的,和你的WebControls有什么冲突呢?不理解。。
      

  5.   

    回复7楼:
    那是winform里的东西,在web里不能用。
      

  6.   

    这个你看看应该差不多了。
    http://topic.csdn.net/t/20040409/08/2943354.html
      

  7.   

    web是无状态的,能够中断服务器的方法来询问客户端的?觉得只有先使用AJAX判断文件是否存在在做进一步的操作。
      

  8.   

    ClientScript.RegisterStartupScript(typeof(Page), "open", "("<script>confirm(是否覆盖....);</script>", true);
    有用吗
      

  9.   

    web没有状态,就是提示了也没有用。上传文件能够搞出个相同文件名就是严重的错误了。你还搞这种高科技提示框。
      

  10.   

    public static void Show(System.Web.UI.Page page,string msg) { page.ClientScript.RegisterStartupScript(page.GetType(),"message", "<script language='javascript' defer>alert('" + msg.ToString() + "');</script>"); } 
      

  11.   

    关键是web没有messagebox
    就用注册脚本块不行么,就12楼的
    要不你就重新给上传文件命名
    提示是否覆盖怎么办呢,如果不同的人上传的文件不同 名字相同嘞?
    还是重新给个名字给上传文件吧
      

  12.   

    ClientScript.RegisterStartupScript(this.GetType(), "message", " <script language='javascript' >if(Confirm('确认码?'))document.getElementById('Hf').value='1'; else document.getElementById('Hf').value='0'; </script>"); if(Hf.Value.Equals("1")) 
    { } 
     
      

  13.   

    I 服了 YOU
    可以先判断文件名是否存在 然后进行不同操作
      

  14.   


    不行是什么意思?是不允许用还是用了没效果?
    如果是用了没有效果的话,可以用Page.RegisterStartupScript("ConfirmExitFile","<script language='javascript'>confirm('是否覆盖?');</script>");
      

  15.   

    如果你仅仅是文件名的话,可以采用这种形式命名:DateTime.Now.ToString("yyyymmddhhmmssfff");一秒的千分之一的差别,重名的机会很小,如果你在前面再带上操作者的 ID 之类,那就不可能重名了
      

  16.   

    可以先用ajax传参到后台判断是否存在
      

  17.   

    如果文件名存在就改个唯一的名字,这样提示用户的做法很不好,web不像winform,用户看不到那些文件名是已经存在的。
      

  18.   

    上传要覆盖?那至少你上传时要扫描一遍已经上传的文件名然后与你要上传的进行匹配才能作出判断吧,这个效率太低了···,上传要判断是否存在本身就有点扯淡的需求 而且messagebox也不是网页中用的方法啊
      

  19.   

    attribute.add("onclick","return confirm()")
      

  20.   

    采用Javascript 或 ajax 都可以实现
      

  21.   

    文件上传单独开个iframe,提交上传后主页动态加载js脚本请求服务器相关上传状态,如果状态为已存在则让用户confirm并动态加载js脚本回馈服务器。
    上传处理部分,如果文件已存在,设置一个任务超时(到这个超时如果客户端没有确认上传就删除该任务)
      

  22.   

    采用Javascript 或 ajax 都可以实现
      

  23.   

    另外要说明的是,普通的方法,上传Page_Load的时候文件实际就已经上传好了,只是另存为的问题。如果要做到确认后才真实上传的话,比较复杂,需要自己实现文件上传的HTTP解析功能,并在web.config中添加配置(以下是我使用的相关配置)<configuration><system.web><httpHandlers>
    <add verb="POST" path="/upload.aspx" type="showjim.web.uploadHandler, showjim.web"/>
    </httpHandlers></system.web></configuration>
    当然这样做比较复杂,主要用于文件上传进度的显示,对于你的问题可以变通一下,先不提交上传文件,先动态加载js提交地址,确认为再提交文件。