ASP.NET使用Button而不是FileUpload上传文件

时间:2020-02-05 19:29:10

标签: asp.net

我正在尝试使用以下代码段将Button元素与隐藏的FileUpload元素与ASP.NET一起上传文件:

protected void Page_Load(object sender, EventArgs e)
{
    Button2.Attributes.Add("onclick", "document.getElementById('" + FileUpload1.ClientID + "').click();");
}

“我的按钮”具有Id = "Button2",FileUpload Id = "FileUpload1"。单击按钮Windows资源管理器已成功打开以上传文件,但是FileUpload.HasFile仍返回false(在进一步的代码中)(即使打开资源管理器并选择了文件,也不会加载任何文件)。

此问题的原因是什么以及如何解决?

1 个答案:

答案 0 :(得分:0)

好吧,我想您想隐藏FileUpload控件,并且仍然能够上传文件。

请按照以下步骤操作以达到要求:

  1. 放置一个FileUpload控件,使其隐藏类。如下所示:
<style>
    .hidden{
      display: none;
    }
</style>
<asp:FileUpload runat="server" ID="FileUpload1" CssClass="hidden" />
  1. 然后放置一个按钮,该按钮将对客户端可见并且将处理Javascript事件
<asp:Button runat="server" ID="Button1" Text="Upload File" OnClick="Button1_Clicked" />
  1. 添加Javascript事件来处理事情
$(document).ready(function(){
    // This event will help click the FileUpload control
    $('#<%= Button1.ClientID %>').on('click', function(){
        $('#<%= FileUpload1.ClientID %>').click();
        return false; // important to return false, so it does not posts back yet.
    });

    $('#<%= FileUpload1.ClientID %>').on('change', function(){ // To see if the file selection was changed and the user has selected something
        if($(this).val() == ''){
            alert('No file selected');
            return false;
        }
        if(confirm('Do you want to upload this file? ' + $(this).val())){
            __doPostBack('<%= Button1.ClientID %>', ''); // this will postback to the server click event
        }
    });

});
  1. 现在,处理上传的文件。
public void Button1_Clicked(object sender, EventArgs e)
{
    // Handle your upload function
    var hasFile = FileUpload1.HasFile;
}

PS:这是一个粗略的主意,该代码未经测试,因此可能需要一些帮助。

相关问题