Como utilizar correctamente o ASP.NET controlo da carga de Ficheiros
aqui está a minha configuração actual do espaço de nomes:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
E dentro da minha turma, só estou a usar:
FileUpload fileUpload = new FileUpload();
No entanto, nenhum dos atributos que normalmente fazem parte do FileUpload parece estar disponível... tais como .HasFile. Eu estou tentando fazer o método do botão clique no código atrás, eu notei que a maioria do uso de .O HasFile está no código à frente, no entanto, foi meu entendimento que isto não deve questao.
Alguém sabe porquê?5 answers
ASP.NET os controlos devem ser colocados no ficheiro de marcação aspx. Essa é a forma preferida de trabalhar com eles. Então adicione FileUpload
controle à sua página. Certifique-se de que tem todos os atributos necessários, incluindo ID
e runat
:
<asp:FileUpload ID="FileUpload1" runat="server" />
A instância de FileUpload1
será criada automaticamente em auto-gerado / actualizado *.Designer.ficheiro cs que é uma classe parcial para a sua página. Você geralmente não tem que se importar com o que está nele, basta assumir que qualquer controle em uma página aspx é automaticamente criar.
Adicione um botão que fará a publicação de volta:
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
Então vai para a tua casa.aspx.ficheiro cs onde tem o seu código e adicione o botão manipulador. Em C# parece assim:
protected void Button1_Click(object sender, EventArgs e)
{
if (this.FileUpload1.HasFile)
{
this.FileUpload1.SaveAs("c:\\" + this.FileUpload1.FileName);
}
}
E pronto. Tudo deve funcionar como esperado.
Em vez de instanciar o {[[1]} no seu código por trás do ficheiro, basta declará-lo no seu ficheiro de marcação (.ficheiro aspx):
<asp:FileUpload ID="fileUpload" runat="server" />
Então você será capaz de acessar todas as propriedades do controle, tais como HasFile
.
Adicionar um controlo de FileUpload a partir do Código atrás deve funcionar perfeitamente, onde a propriedade HasFile deve estar disponível (por exemplo, no seu evento clique).
Se as propriedades não parecem estar disponíveis( seja como um erro de compilador ou via intellisense), você provavelmente está referenciando uma variável diferente do que você pensa que está.
A outra opção é que você não instanciou o objecto FileUpload como uma variável de instância. certifique-se do Código:
FileUpload fileUpload = new FileUpload();
Não está dentro de uma função no seu código atrás.
System.Web.UI.WebControls.FileUpload fileUpload;
Não sei porquê, mas quando estás a usar o FileUpload sem o sistema .Site.UI.WebControls {[6] } está a referir-se a o seu projecto.FileUpload not System.Site.UI.WebControls.FileUpload .