Array
(
)

Grava no diretorio, mas no banco de dados SQL SERVER não

Dirceu Azevedo
   - 23 nov 2011

Tenho o código abaixo:
Faço a Upload e gravo a imagem normalmante a imagem sem tratamento. Grava a imagem como esta.
Como faço para pegar a imagem tratada, via MemoryStream ms, que reduz a imagem ao tamanho 300 x 250 e grava-la no banco de dados. No diretoria ele grava imagem no tamanho 300 x 250.
Preciso pegar a imagem tratada e joga-la aqui, para que seja gravada no banco como binario.
byte[] bytPhoto = fupTravel.FileBytes;
insertImage(str,bytPhoto);

Segue código abaixo:
protected void btnSave_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream(fupTravel.FileBytes);
Bitmap map = System.Drawing.Image.FromStream(ms) as Bitmap;
System.Drawing.Image thumbnail = new Bitmap(300, 250);
System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(thumbnail);
graphic.DrawImage(map, 0, 0, 300, 250);
thumbnail.Save(HttpContext.Current.Server.MapPath(@ + fupTravel.FileName), System.Drawing.Imaging.ImageFormat.Jpeg);
string str = txtTravel.Text;
byte[] bytPhoto = fupTravel.FileBytes;
insertImage(str,bytPhoto);
}
private void insertImage(string strTravel, byte[] imgTravel)
{
using(SqlConnection con = new SqlConnection(_connectionString) )
{
string sql = INSERT INTO DEV_TRAVEL (TRAVEL, TRAVEL_IMAGE) VALUES (@travel,@image);
SqlCommand cmd = new SqlCommand(sql,con);
cmd.CommandType = CommandType.Text;
//Initialize parameters
cmd.Parameters.AddWithValue(@travel, SqlDbType.VarChar).Value = strTravel;
cmd.Parameters.AddWithValue(@image, SqlDbType.VarBinary).Value = imgTravel;
con.Open();
cmd.ExecuteNonQuery();
Grato
Dirceu M. Azevedo

Ricardo Mauro
   - 25 nov 2011

Da algum erro?

Wesley Souza
   - 28 nov 2011

Cara eu faço isso mas utilizando entity framework. a função que eu pego o arquivo e transformo em binário é essa que segue abaixo. O problema pode ser na conversão dos dados.

#Código

public static byte[] GetArquivo(string filePath)
        {
            try
            {
                FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);

                byte[] arqFile = br.ReadBytes((int)fs.Length);

                br.Close();
                fs.Close();

                return arqFile;
            }
            catch
            {
                return null;
            }
        }

Dirceu Azevedo
   - 28 nov 2011

Boa tarde,

protected void btnSave_Click(object sender, EventArgs e)
{
MemoryStream ms = new MemoryStream(fupTravel.FileBytes);
Bitmap map = System.Drawing.Image.FromStream(ms) as Bitmap;
System.Drawing.Image thumbnail = new Bitmap(300, 250);
System.Drawing.Graphics graphic = System.Drawing.Graphics.FromImage(thumbnail);
graphic.DrawImage(map, 0, 0, 300, 250);
thumbnail.Save(HttpContext.Current.Server.MapPath(@ + fupTravel.FileName), System.Drawing.Imaging.ImageFormat.Jpeg);

Como trato o resultado acima usando sua função?

Grato
Dirceu

Wesley Souza
   - 28 nov 2011

você passa por parâmetro o caminho em que se encontra o arquivo já tratado e ele te devolve o arquivo em um array pronto pra inserir no banco