Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Clauido José

upload de arquivo

Recommended Posts

Estou avançando nos estudo com c# que bom fico feliz rs, estou precisando de uma ajuda tenho uma pagina que grava o logo da empresa uma imagem upload para diretório de destino, e no banco de dados ele grava apenas o caminho.Veja como estou fazendo meu codigo so que do jeito que ta mesmo que vc não informe o arquvio ele grava a informação no banco.


                                    if (logo.HasFile)
                                    {
                                        string filename = Path.GetFileName(logo.FileName);
                                        logo.SaveAs(Server.MapPath("~/imagem/") + filename);
                                        lblStatus.Text = "Upload status: File uploaded!";
                                    }
                                    dr.Close();
                                    cmd.Dispose();
                                    string breve = txtBreve.Text;
                                    string descricao = ckDescricao.Text;
                                    string sFile = "imagem/" + logo.FileName;
                                    DateTime data = Convert.ToDateTime(txtData.Text);
                                    string data_cadastro = data.ToString("yyyy/mm/dd");
                                    string sqlConn = "UPDATE tempresa set titulo='" + titulo + "',breve='" + breve + "',descricao='" + descricao + "',logo='" + sFile;
                                    sqlConn += "' WHERE idempresa = " + Request.QueryString["idempresa"];
                                    cmd.CommandText = sqlConn;
                                    cmd.ExecuteReader();
                                    lblStatus.Text = "Empresa autalizada com sucesso";
                                    con.Close();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente antes de gravar no banco de dados verificar se o valor não está nulo.

// A '!' confere se não está nulo
if(!string.IsNullOrEmpty(logo.FileName))
{
    string sFile = "imagem/" + logo.FileName;
}
else
{
    string sFile = null
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pergunta porque as variáveis que eu crio dentro do bloco do if não é reconhecida fora do do bloco do if?

 

São variáveis locais e são "descartadas" no fim do bloco 'if'

using System;

public class MinhaClasse
{
	//Pode ser visivel em toda a classe.
	int variavel = 0;
	
	public Calculo()
	{
		//Só é vísivel dentro desse metódo
		int outraVar = 1;
		
		if(variavel != outraVar)
		{
			//Só é vísivel dentro do bloco if.
			int umaOutraVar = 2;
		}
	}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

agora confundiu tudo como vou fazer isso porque como são variáveis locais da erro na hora de gravar no banco porque a variável ja esta morta e ai como faço?

Compartilhar este post


Link para o post
Compartilhar em outros sites
//A variável é criada fora do if
string sFile = "imagem/";

// A '!' confere se não está nulo
if(!string.IsNullOrEmpty(logo.FileName))
{
    sFile += logo.FileName;
}
else
{
    sFile = null
}

Você pode usar assim. É só criar a variável fora do bloco if e usá-la sempre que precisar. Mas, confira se o campo da sua tabela no banco de dados aceita valores nulos.

Espero que não tenha confundido mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

entao fiz como no exemplo e da o seguinte erro:

 

 

A local variable named 'sFile' cannot be declared in this scope because it would give a different meaning to 'StrFileName', which is already used in a 'parent or current' scope to denote something else

string sFile = "";
        string SQL = "SELECT * FROM tempresa where titulo = @titulo";
        MySqlCommand cmd = new MySqlCommand(SQL, con);
        cmd.Parameters.Add("@titulo", MySqlDbType.VarChar).Value = txtempresa.Text;

        try
        {
            con.Open();
            if (con.State == ConnectionState.Open)
            {
                reader = cmd.ExecuteReader();
                if (reader.Read())
                {
                    lblStatus.Text = "Empresa ja cadadastrada em nosso sistema !!";
                }
                else
                {
                    try
                    {
                        if(!string.IsNullOrEmpty(logo.FileName))
                        {

                            // PostedFile.FileName passa o caminho completo do arquivo na maquina local. Usando a função Substring ele passa para string todos os dados do arquivo.
                            string sFile = logo.PostedFile.FileName.Substring(logo.PostedFile.FileName.LastIndexOf("\\") + 1);
                            //Obtém o tipo de arquivo.
                            string StrFileType = logo.PostedFile.ContentType;
                            //Obtém o tamanho do arquivo enviado via formulário.
                            int IntFileSize = logo.PostedFile.ContentLength;
                            //Verifica se o arquivo consegue ser carregado no servidor para ser gravado no diretório correto.
                            //Se for menor ou igual a zero, significa que não conseguiu subir o arquivo.
                            if (IntFileSize <= 0)
                                lblStatus.Text= " <font color=’Red’>A tentativa de upLoad do arquivo " + sFile + " falhou! </font>";
                            else
                            {

                                //Salva o arquivo no diretório especificado.
                                logo.PostedFile.SaveAs(Server.MapPath("admin\imagem") + sFile);
                            }
                        }
                        else
                        {
                            string sFile = "";
                        }

                        reader.Close();
                        cmd.Dispose();
                        //Obtem o valor do TextBox no EditItemTemplet da linha clicada
                        string titulo = txtempresa.Text;
                        string breve = txtBreve.Text;
                        string descricao = ckDescricao.Text;
                        DateTime data = Convert.ToDateTime(txtData.Text);
                        string data_cadastro = data.ToString("yyyy/mm/dd");
                        string sqlConn = "INSERT INTO tempresa (titulo,breve,descricao,data_cadastro,logo) values  ('";
                        sqlConn += titulo + "','" + breve + "','" + descricao.Replace('/', ',') + "','" + data_cadastro + "','" + sFile + "')";
                        cmd.CommandText = sqlConn;
                        cmd.ExecuteReader();
                        lblStatus.Text = "Empresa Cadastrada com sucesos";

                        con.Close();

Compartilhar este post


Link para o post
Compartilhar em outros sites


Fiz assim para salvar a imagem de capa de um filme:

string extensao = Path.GetExtension(fupCapa.FileName.ToLower());

string fileName = fupCapa.FileName;

try

{

if (extensao == string.Empty)

{

filme.capa = "~/Imagens/null-value.gif";

}

else if (extensao == ".png" || extensao == ".jpg" || extensao == ".jpeg")

{

fupCapa.SaveAs(@"Caminho da pasta\" + fileName);

filme.capa = @"..\Imagens\" + fileName;

}

else

{

ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "mensagem", "alert('Arquivo não suportado. Apenas imagem.')", true);

return;

} catch (Exception ex) {

throw ex;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você criou variáveis com o mesmo nome, não pode. Veja que tem uma sFile no início do código e dentro do bloco 'if' e do 'else'

 

Você cria a variável e a usa em determinado lugar

string sFile = "";

if(condição)
{
   //Não precisa digitar "string sFile" novamente, só usá-la.
   sFile = "caminho";
}


Compartilhar este post


Link para o post
Compartilhar em outros sites

Variáveis locais são descartadas depois da finalização do bloco, uma maneira de conseguir é criar variáveis de escopo, como já foi dito aqui, você cria uma variável fora do bloco IF e usa ela dentro da função inteira, apenas dando valores a ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.