代码之家  ›  专栏  ›  技术社区  ›  HenrikP

C#使用按钮回发而不是POST上传Webform文件

  •  5
  • HenrikP  · 技术社区  · 12 年前

    我有一个Webform(aspx)页面。

    在它中,我们基本上有一个在按下按钮时“发布”的表单,但实际上它不是真正的httpPOST,它实际上只是按钮上的一个回发onclick事件。 在这个事件中,我们得到了所有我们想要的信息,比如用户在文本字段中键入的内容等等。

    但现在我想添加一个文件上传器,更具体地说是一个图像上传器。

    我可以在按钮事件点击回发中从codebehind获取用户上传到输入类型文件的文件吗?不是httppost。

    2 回复  |  直到 12 年前
        1
  •  7
  •   Rohit Arora    11 年前

    有一个特定的控件,FileUpload。只需将其添加到页面上,就可以在回发时从该控件获取上载的文件,这与页面上的其他控件(如文本框等)非常相似。 有关详细信息: http://asp.net-tutorials.com/controls/file-upload-control/

    aspx页面:

    <form id="form1" runat="server">
        <asp:FileUpload id="FileUploadControl" runat="server" />
        <asp:Button runat="server" id="UploadButton" text="Upload" onclick="UploadButton_Click" />
        <br /><br />
        <asp:Label runat="server" id="StatusLabel" text="Upload status: " />
    </form>
    

    背后代码:

    protected void UploadButton_Click(object sender, EventArgs e)
    {
        if(FileUploadControl.HasFile)
        {
            try
            {
                string filename = Path.GetFileName(FileUploadControl.FileName);
                FileUploadControl.SaveAs(Server.MapPath("~/") + filename);
                StatusLabel.Text = "Upload status: File uploaded!";
            }
            catch(Exception ex)
            {
                StatusLabel.Text = "Upload status: The file could not be uploaded. The following error occured: " + ex.Message;
            }
        }
    }
    
        2
  •  0
  •   Ali NajafZadeh    5 年前

    尝试以下方式:

    <form id="frmUpload" enctype="multipart/form-data" runat="server" >
     <input type="file" id="FilesToUpload" name="FilesToUpload" />
     <asp:Button ID="UploadFiles" OnClick="ClickUpload" Text="Upload File . . ." runat="server"/>
    </form>
    

    代码部分:

    protected void ClickUpload(object sender, EventArgs e)
    {
        String fileToUpload = Request.Files["FilesToUpload"];
    
        //check file if exists for submitted
        if (fileToUpload != null && fileToUpload.ContentLength > 0)
        {
            string FileName = Path.GetFileName(fileToUpload.FileName);
            fileToUpload.SaveAs(Server.MapPath(Path.Combine("~/YourFileFolder/", FileName)));
        }
    }