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

23/11/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

Dirceu Azevedo

Respostas

25/11/2011

Ricardo Mauro

Da algum erro?
Responder Citar

28/11/2011

Wesley Souza

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.

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;
            }
        }
Responder Citar

28/11/2011

Dirceu Azevedo

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
Responder Citar

28/11/2011

Wesley Souza

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
Responder Citar