Como utilizar correctamente o ASP.NET controlo da carga de Ficheiros

Estou a tentar usar o controlo de FileUpload em ASP.NET

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ê?

Author: Jan Wikholm, 2010-02-11

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.
 50
Author: Maciej D., 2016-08-24 19:32:56

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.

 1
Author: wsanville, 2010-02-11 01:23:49

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á.

 1
Author: tbischel, 2010-02-11 01:45:23
Tenho notado que quando a intelectualidade não funciona para um objeto, geralmente há um erro em algum lugar da classe acima da linha em que você está trabalhando.

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.

 0
Author: Edison, 2010-02-11 02:22:49
A minha solução em código atrás foi:
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 .
 0
Author: Josef, 2017-03-24 11:00:04