FileUpload não está funcionando no painel de atualização
Então, o que estou tentando fazer é que um usuário selecione um arquivo para fazer upload. Como vou aceitar apenas imagens, testarei a extensão. Também quero limitar o tamanho do arquivo para menos de 2mb, então testarei isso (ainda não foi implementado no código). Se o arquivo selecionado for aprovado, desejo que o rótulo diga "Arquivo aceito" e armazene as informações de upload do arquivo para um clique posterior no botão. Isso acontecerá assim que o usuário terminar de preencher o restante do formulário. Eventualmente, colocarei um controle UpdateProgress na página enquanto ele estiver verificando se o arquivo é permitido. Eu preferiria não tê-lo postado de volta para isso, então se eu conseguir fazê-lo funcionar, isso seria ótimo. BTW, tudo funcionará bem se eu retirar o rótulo do painel de atualizaçã
O que acontece quando eu executo isso, é que ele irá para a instrução else do primeiro if e retornará "Por favor, selecione um arquivo". Significando que FileUpload1.HasFile está retornando false. A única razão pela qual vejo que isso está acontecendo é porque o UpdatePanel não pode acessar essas informações do controle FileUpload?
Código por trás
Label SubmitButtonLabel2= (Label)UpdatePanel1.FindControl("SubmitButtonLabel");
if (FileUpload1.HasFile)
{
string[] fileName = FileUpload1.FileName.Split('.');
if ((fileName[fileName.Length - 1] == "jpg") ||
(fileName[fileName.Length - 1] == "gif") ||
(fileName[fileName.Length - 1] == "bmp") ||
(fileName[fileName.Length - 1] == "jpeg") ||
(fileName[fileName.Length - 1] == "png"))
{
SubmitButtonLabel2.Text = "File Accepted.";
}
else
{
SubmitButtonLabel2.Text = "File type not allowed. Please choose another.";
}
}
else
{
SubmitButtonLabel.Text = "Please select a file.";
}
Página
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="SubmitButton" runat="server" Text="Submit File" OnClick=SubmitButton_Click />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="always">
<ContentTemplate>
<asp:Label ID="SubmitButtonLabel" runat="Server" />
</ContentTemplate>
<Triggers>
<asp:PostBackTrigger ControlID="SubmitButton" />
</Triggers>
</asp:UpdatePanel>
</div>
</form>
</body>