c# Webform文件上传与按钮回发,而不是POST

本文关键字:POST 按钮 文件 Webform | 更新日期: 2023-09-27 17:50:59

我有一个Webform(aspx)页面。

在它里面,我们基本上有这个表单,我们"post"时按下一个按钮,但在现实中它不是一个真正的httpPOST,它实际上只是一个回发onclick事件的按钮。在那个事件中,我们获得我们想要的所有信息,比如用户在文本域中输入了什么等等。顺便说一下,这个效果很好。

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

我可以在按钮事件单击回发中从代码隐藏中抓取用户上传到输入类型文件的文件吗?

c# Webform文件上传与按钮回发,而不是POST

对此有一个特定的控件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;
        }
    }
}

试试:

<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)));
    }
}