Jsp和asp.Net就用一样不行吗,楼主你也不累.

解决方案 »

  1.   

    功能实现如下:
    上件文件,如果存在,显示对话框由用户确认是否覆盖...
    初始化:在主目录下先建好待上传文件存储目录upload前台文件代码:<%@ Page CodeBehind="test.aspx.cs" Language="c#" AutoEventWireup="false" Inherits="BKSoft.test" %>
    <HTML>
    <HEAD>
    <meta content="False" name="vs_showGrid">
    </HEAD>
    <body>
    <form id="frm1" name="frm1" encType="multipart/form-data" runat="server">
    <INPUT id="OverrideFile" type="hidden" name="overrideFile"> <INPUT id="TempFileName" type="hidden" name="tempFileName"><INPUT id="FileName" type="hidden" name="fileName">
    <P>
    <SCRIPT language="javascript">
    function showMessage(fileName,tempFileName)
    {
    if(confirm("该文件服务器上已存在,覆盖吗?"))
      {           
    document.frm1.overrideFile.value ="true";
           
      }
        else
      {
    document.frm1.overrideFile.value ="false";

      }
    document.frm1.fileName.value = fileName;
    document.frm1.tempFileName.value = tempFileName;
    document.frm1.submit(); 

    }
     


    </SCRIPT>
    <asp:Label Runat="server" ID="lbl" Visible="False" />
    </P>
    <P><br>
    <input id="UploadedFile" type="file" size="35" name="UploadedFile" runat="server">
    <asp:button id="Upload" onclick="Upload_Click" runat="server" Text="Upload"></asp:button></P>
    <P>
    <asp:Label Runat="server" ID="StatusMessage" Visible="False" /></P>
    </form>
    </body>
    </HTML>
      

  2.   

    后台编码文件(test.aspx.cs):using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.IO;
    namespace BKSoft
    {
    /// <summary>
    /// test 的摘要说明。
    /// </summary>
    public class test : System.Web.UI.Page
    {

    protected System.Web.UI.WebControls.Button Upload;
    protected System.Web.UI.HtmlControls.HtmlInputFile UploadedFile;
    protected System.Web.UI.WebControls.Label StatusMessage;
    protected System.Web.UI.WebControls.Label lbl;
    private string folderPath="upload/";
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面

    lbl.Visible = false;
    string overrideFile = Request.Form["overrideFile"];
    string fileName = Request.Form["fileName"];
    string tempFileName = Request.Form["tempFileName"];

    if (overrideFile=="true" || overrideFile=="false")
    OverrideFile(overrideFile,tempFileName,fileName);


    } #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.Upload.Click += new System.EventHandler(this.Upload_Click);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion

    private void OverrideFile(string overrideFile,string sourceFileName,string destFileName)
    {
     string destDir = Server.MapPath(folderPath);
     string sourceFile = Path.Combine(destDir, sourceFileName);
     string destFile = Path.Combine(destDir, destFileName);
     if (overrideFile=="true") 
    {
    File.Copy(sourceFile,destFile,true);
    File.Delete(sourceFile);
    }
    else
     File.Delete(sourceFile);


    }

    public void Upload_Click(object sender, System.EventArgs e)
    {
    if (UploadedFile.PostedFile != null && UploadedFile.PostedFile.FileName.Length > 0 )
    {
     string destDir = Server.MapPath(folderPath);
                  
     try
    {
     // save the to the current directory
     string fileName = Path.GetFileName(UploadedFile.PostedFile.FileName);
     string destFile = Path.Combine(destDir, fileName);
     if (File.Exists(destFile))
     {
     string tempFileName = "temp" + fileName;
     destFile = Path.Combine(destDir, tempFileName);
     UploadedFile.PostedFile.SaveAs(destFile);
     
     lbl.Text = "<script>showMessage('" + fileName + "','" + tempFileName + "'); </script>";
     lbl.Visible = true;
     //Response.End();
     //Response.Redirect("test.aspx");// refresh the page
     }
     else
     {    
     
     UploadedFile.PostedFile.SaveAs(destFile);
     Response.Redirect("test.aspx");// refresh the page
     }

    }
    catch (Exception exc)
    {
    StatusMessage.Text = exc.Message;
    StatusMessage.Visible = true;
    }

    } }
    }
    }
      

  3.   

    to  goben(雪松):
    不好意思,昨天晚上有事不能上网。能和我说说你的设计思路吗?
      

  4.   

    思路如下:把要显示信息的JavaScript函数提前在前端写好,这样,在后台调用的时候只要传递参数就好,不用太多的语句.
    前台的JavaScript函数一看就会明白,通过对话框决定用户是否覆盖的要求,保留此状态至量Hidden变量中,同时把由服务器端传来的参数也保存另外两个hidden元素中.然后,例表格提交.即frm.submit
    表格以post方式提交(因为表格用的是runat=server 有提交给自己本身)
    在后台Page_Load事件中,把三个hidden变量从表格读出,并进行判断.如果覆盖文件的状态变量不为空,且,为"true"或"false"则,调用相关参数,处理与文件相关的覆盖操作...否则,不予处理...(第一次启用时就是不予处理)后台传递参数时未用Response.Write,而是为一个Label控件赋Text属性,并使Visible为True,这样,脚本就由后台传到前台了.前台代码,显示,并调用已经写好的脚本,以寻求用户是否覆盖的意见,又由表格提交传到后台,进一步处理...