none
Upload de Imagens em tabelas SQL - ERRO RRS feed

  • Pergunta

  • Bom estou fazendo um sistema de upload de imagens em ASP.NET/C# sendo que as imagens serão armazenadas em meu banco de dados, porém algum erro ocorre, veja:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data;
    using System.Data.SqlClient;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
        protected void btnEnviar_Click(object sender, EventArgs e)
        {
    
            if(uploadFile.HasFile) // Se o arquivo for carregado...
            {
    
                string fileName = Path.GetExtension(uploadFile.PostedFile.FileName);
    
                string extensao = fileName.ToLower(); // Pega a extensão do arquivo (png, gif, jpeg)
    
                string tipoArquivo = null;
    
                switch(extensao)
                {
    
                    case ".png":
    
                        tipoArquivo = "image/png";
    
                        break;
    
                    case ".jpg":
                    case ".jpeg":
                    case ".jpe":
    
                        tipoArquivo = "image/jpg";
    
                        break;
    
                    case ".gif":
    
                        tipoArquivo = "image/gif";
    
                        break;
    
                    default:
                        
                        lblText.Text = "Este arquivo não é aceito! <br />";
    
                        break;
    
                }
    
                if (tipoArquivo != string.Empty)
                {
    
                    SqlConnection conn = new SqlConnection("Initial Catalog=Estudos;Data Source=ANDRÉ-PC\\DEDE;Integrated Security=SSPI");
    
                    conn.Open();
    
                    string stringCommand = "INSERT INTO uploadImagens VALUES (@nomeArquivo, @horaUpload, @MIME, @imagem";
    
                    SqlCommand command = new SqlCommand(stringCommand, conn);
    
    
    
                    byte[] imageBytes = new byte[uploadFile.PostedFile.InputStream.Length + 1];
    
                    uploadFile.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length);
    
                    SqlParameter[] param = new SqlParameter[4];
                    {
    
    
                        param[0] = new SqlParameter("@nomeArquivo", txtNome.Text);
                        param[1] = new SqlParameter("@horaUpload", DateTime.Now);
                        param[2] = new SqlParameter("@MIME", tipoArquivo);
                        param[3] = new SqlParameter("@imagem", imageBytes);
    
                        command.Parameters.AddRange(param);
    
                    }
    
                    command.ExecuteNonQuery();
    
                }
                else
                {
    
    
                    Response.Redirect("Default.aspx");
    
                }
    
          }
    
        }
    }
    

    Bom ele diz que  aquele "Path" do GetExtension não existe, porém no artigo do macoratti tudo ocorre normalmente



    • Editado André .NET quarta-feira, 26 de outubro de 2011 20:41
    quarta-feira, 26 de outubro de 2011 20:10

Respostas

Todas as Respostas

  • Nem vou analisar o código...

    A sequencia correta é:

     

    	conn.Open();
    
                string stringCommand = "INSERT INTO uploadImagens VALUES (@nomeArquivo, @horaUpload, @MIME, @imagem";
    
                SqlCommand command = new SqlCommand(stringCommand);            
    
                byte[] imageBytes = new byte[uploadFile.PostedFile.InputStream.Length + 1];
    
                uploadFile.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length);
    
                SqlParameter[] param = new SqlParameter[4];
                {
    
    
                    param[0] = new SqlParameter("@nomeArquivo", txtNome.Text);
                    param[1] = new SqlParameter("@horaUpload", DateTime.Now);
                    param[2] = new SqlParameter("@MIME", tipoArquivo);
                    param[3] = new SqlParameter("@imagem", imageBytes);
    
                    command.Parameters.Add(param);
    
    			}
    			
             command.ExecuteNonQuery();
    		 
    		 conn.Close();
    


    O ExecuteNonQuery executa a query. Como você pode mandar executar a query sem ter terminado de configurar o Command?
    Fora isto existe o erro por que você não apontou a conexão no objeto Command. Isto que coloquei ai em cima ainda está errado. Tente fazer assim:

    string stringCommand = "INSERT INTO uploadImagens VALUES (@nomeArquivo, @horaUpload, @MIME, @imagem";
    SqlCommand command = new SqlCommand(stringCommand, conn); 
    byte[] imageBytes = new byte[uploadFile.PostedFile.InputStream.Length + 1];
    uploadFile.PostedFile.InputStream.Read(imageBytes, 0, imageBytes.Length);
    SqlParameter[] param = new SqlParameter[4];
    {
        param[0] = new SqlParameter("@nomeArquivo", txtNome.Text);
        param[1] = new SqlParameter("@horaUpload", DateTime.Now);
        param[2] = new SqlParameter("@MIME", tipoArquivo);
        param[3] = new SqlParameter("@imagem", imageBytes);
        command.Parameters.Add(param);
    
    }
    conn.Open();			
    command.ExecuteNonQuery();		 
    conn.Close();


     

     


    --
    Marque as respostas e ajude a melhorar a busca do fórum. pcfviana@gmail.com

    quarta-feira, 26 de outubro de 2011 20:41
  • Veja o código novamente '-'
    quinta-feira, 27 de outubro de 2011 13:28
  • Coloque using System.IO. Veja se resolve.

    --
    Marque as respostas e ajude a melhorar a busca do fórum. pcfviana@gmail.com
    quinta-feira, 27 de outubro de 2011 13:45
  • Olá André,

    Como o Paulo disse, faça referência ao namespace System.IO.

     

    []s!


    Fernando Henrique Inocêncio Borba Ferreira
    while(alive){ this.WriteCode(); }
    Blog: http://ferhenriquef.wordpress.com/
    Twitter: @ferhenrique
    sexta-feira, 28 de outubro de 2011 03:13
    Moderador