Jump to content
joaomago

Ler ficheiro binário

Recommended Posts

joaomago

Boas pessoal,

Estou com um problema ao tentar ler um ficheiro em binário. O campo na base dados está em varbinary e está preenchido, mas ao tentar ler dá-me erro ..

O código da minha classe está aqui:

public static ArrayList GetAnexo(string id)
       {
           SqlCommand cmd = null;
           SqlConnection cn = null;
           SqlDataReader dr = null;
           ArrayList resultado = null;
           try
           {
               cn = new SqlConnection(dbloading);
               cn.Open();
               cmd = new SqlCommand();
               cmd.Connection = cn;
               cmd.CommandText = @"SELECT TOP 10000 [identificacaoEntidade].[iD]
                                 ,[Anexos]

                               FROM  [C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\IDT.mdf].[dbo].[identificacaoEntidade]

                               WHERE [identificacaoEntidade].[iD]='" + id + "' ";

               cmd.ExecuteNonQuery();

               dr = cmd.ExecuteReader();

               if (dr.HasRows)
               {
                   // ver se a bd devolveu registos 
                   resultado = new ArrayList();

                   while (dr.Read())
                   {// enquanto houver linhas para ler

                       Entidades b = new Entidades();
                       if (!dr.IsDBNull(0))
                       {
                           b.ID = dr.GetInt32(0);
                       }
                       if (!dr.IsDBNull(1))
                       {
                           b.Anexos = dr.GetByte(1);
                       }


                       resultado.Add(b);

                   }

               }

           }
           catch (Exception ex)
           {
               string erro = ex.StackTrace;
           }
           finally
           {

               if (dr != null)
               {
                   dr.Close();
               }

               if (cn != null && cn.State != ConnectionState.Closed)
               {
                   cn.Close();
               }
           }

           return resultado;

       }

O erro é o seguinte:

1004652_10200881364849349_1945685547_n.jpg

Acontece quando tenta ler o anexo, alguém me pode ajudar?

Share this post


Link to post
Share on other sites
joaomago

Já li e reli e não entendo, além de já ter experimentado e não funciona

Share this post


Link to post
Share on other sites
joaomago

não, nem é imagem nem mysql ... ficheiros (.docx ; .pdf ; .txt ) e sql server

Share this post


Link to post
Share on other sites
joaomago

Sim, pois o conteudo do campo são bytes, ou devo outro tipo?

Já experimentei um processo identico, e não deu

Share this post


Link to post
Share on other sites
brunobola

Tens N maneiras de fazer experimenta como este exemplo:

//Database connection code...
cmd.CommandText = "SELECT FileData FROM Files WHERE ID = @ID";
cmd.Parameters.Add("@ID", SqlDbType.Int).Value = 1234;
SqlDataReader sqlRead = cmd.ExecuteReader();

string fileName = "file.txt";
string fileDir = "C:\\Test\\";
string fileUrl = "/";

if (sqlRead.HasRows)
{
while(sqlRead.Read())
{
	byte[] fileData = (byte[]) sqlRead[0].Value;
	BinaryWriter fileCreate =
		new BinaryWriter(File.Open(fileDir + fileName, FileMode.Create));
	fileCreate.Write(fileDate);
	fileCreate.Close();
	HttpResponse.Redirect(fileUrl + fileName);
}
}

sqlRead.Close();

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.