我正在尝试上传一个带有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 (即使资源管理器打开并选择了文件,也不会加载任何文件)。
此问题的原因是什么?如何解决?
发布于 2020-02-06 06:44:26
好吧,我猜你想隐藏FileUpload
控件,但仍然可以上传文件。
按照以下步骤实现所需的功能:
FileUpload
控件。如下所示:<style>
.hidden{
display: none;
}
</style>
<asp:FileUpload runat="server" ID="FileUpload1" CssClass="hidden" />
然后,
Javascript
events<asp:Button runat="server" ID="Button1" Text="Upload File" OnClick="Button1_Clicked" />
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
}
});
});
public void Button1_Clicked(object sender, EventArgs e)
{
// Handle your upload function
var hasFile = FileUpload1.HasFile;
}
PS:这是一个粗略的想法,代码没有经过测试,所以它可能需要一些爱。
https://stackoverflow.com/questions/60082843
复制相似问题