View Full Version : Erro Em Upload


ButterflyEffect
04-04-2008, 19:39
SqlConnection cnn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["IGMConnectionString"].ConnectionString);
string upload = ConfigurationManager.AppSettings.Get("upload");
if (Upload1.HasFile == false)
{
erro.Text = "falta o ficheiro!";
}
else
{
Upload1.SaveAs(System.AppDomain.CurrentDomain.Base Directory + "\\images\\" + Upload1.FileName);
}

try
{
SqlConnection cn = new SqlConnection(ConfigurationManager.ConnectionStrin gs["IGMConnectionString"].ConnectionString.ToString());
SqlCommand cmd2 = new SqlCommand("INSERT INTO estrategias (imagem) VALUES (@imagem)", cn);
cn.Open();
cmd2.ExecuteNonQuery();
cn.Close();
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
SqlCommand cmd = new SqlCommand("Insert into estrategias (nome_estrategia,caracteres,descricao) values (@nome_estrategia, @caracteres, @descricao)", cnn);
cnn.Open();
cmd.Parameters.AddWithValue("@nome_estrategia", txtnome.Text);
cmd.Parameters.AddWithValue("@caracteres", txtcaracteres.Text);
cmd.Parameters.AddWithValue("@descricao", txtdescricao.Text);
cmd.ExecuteNonQuery();
cnn.Close();
txtnome.Text = "";
txtcaracteres.Text = "";
txtdescricao.Text = "";

Necessito de faxer upload d imagens.Na base dados possui o campo imagem do tipo image. E as imagens sao guardadas em images.
Não da erro nenhum este codigo e guarda na pasta correcta mas nao guarda caminho nenhum na base de dados.

Podiam ajudarm??
cump

P2mb2
05-04-2008, 10:58
Faz batota :D

Usa o endereço e adiciona só o nome da imagem no fim.... Isto é, a não ser que isto seja para vários hosts (dinamico) podes simplestemente meter:


String insert = "http://oteudominio.com/imagens"+ Upload1.FileName;
SqlCommand cmd2 = new SqlCommand("INSERT INTO estrategias (imagem) VALUES '" + insert + "'", cn);

Fica só o alerta, não uses o nome directo da imagem, porque corres o risco de upar 2 imagens com o mm nome e arranjar conflitos depois... trata o FileName com um random kklker tipo:

Random RandomClass = new Random();
int RandomNumber = RandomClass.Next(0, 1000000);
String NomeFinal = RandomNumber + Upload1.FileName;

assim passas a usar o NomeFinal... e garantes que não tens duplicações quando fazes upload independentemente do nome.

p3dro
05-04-2008, 13:22
Necessito de faxer upload d imagens.Na base dados possui o campo imagem do tipo image. E as imagens sao guardadas em images.
Não da erro nenhum este codigo e guarda na pasta correcta mas nao guarda caminho nenhum na base de dados.

Podiam ajudarm??
cump

Falta-te prencher o parâmetro "@imagem"

SqlCommand cmd2 = new SqlCommand("INSERT INTO estrategias (imagem) VALUES (@imagem)", cn);
cn.Open();
cmd2.ExecuteNonQuery();
cn.Close()

Constróis o comando, abres a ligação, executas o comando, mas nunca chegas a atribuir o valor ao @imagem :)

Falta-te isto, por ex:
cmd2.Parameters.AddWithValue("@imagem", Upload1.FileName);

ButterflyEffect
06-04-2008, 10:58
Falta-te prencher o parâmetro "@imagem"

SqlCommand cmd2 = new SqlCommand("INSERT INTO estrategias (imagem) VALUES (@imagem)", cn);
cn.Open();
cmd2.ExecuteNonQuery();
cn.Close()

Constróis o comando, abres a ligação, executas o comando, mas nunca chegas a atribuir o valor ao @imagem :)

Falta-te isto, por ex:
cmd2.Parameters.AddWithValue("@imagem", Upload1.FileName);


ja coloquei e dame este erro

System.Data.SqlClient.SqlException: Operand type clash: nvarchar is incompatible with image at System.Data.SqlClient.SqlConnection.OnError(SqlExc eption exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnErro r(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndW arning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.FinishExecuteRead er(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) at System.Data.SqlClient.SqlCommand.RunExecuteReaderT ds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader( CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) at System.Data.SqlClient.SqlCommand.InternalExecuteNo nQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at Gestao_estrategias.Button2_Click(Object sender, EventArgs e) in c:\Documents and Settings\João\Os meus documentos\Prototipo\Gestao_estrategias.aspx.cs:li ne 63 ._ctl0_Menu1_0 { background-color:white;visibility:hidden;display:none;positio n:absolute;left:0px;top:0px; } ._ctl0_Menu1_1 { color:Teal;font-family:Verdana;font-size:0.8em;font-weight:bold;text-decoration:none; } ._ctl0_Menu1_2 { width:13px;height:28px;font-weight:bold;font-size:0.8em;font-family:Verdana;color:Teal;border-style:Outset;border-color:PaleTurquoise;background-color:#E3FFFF; } ._ctl0_Menu1_3 { } ._ctl0_Menu1_4 { background-color:#E3FFFF;padding:2px 5px 2px 5px; } ._ctl0_Menu1_5 { } ._ctl0_Menu1_6 { padding:2px 5px 2px 5px; } ._ctl0_Menu1_7 { background-color:#E3FFFF; } ._ctl0_Menu1_8 { } ._ctl0_Menu1_9 { background-color:#5D7B9D; } ._ctl0_Menu1_10 { color:White; } ._ctl0_Menu1_11 { color:White;background-color:Teal; } ._ctl0_Menu1_12 { color:MediumAquamarine; } ._ctl0_Menu1_13 { color:MediumAquamarine; }

p3dro
06-04-2008, 14:19
Deves ter o campo "imagem" com um tipo Image, nesse caso não poderá ser guardado como no exemplo que te dei, visto que o Upload1.FileName retorna um nvarchar

ButterflyEffect
07-04-2008, 13:00
para est codigo campo imagem era de k tipo?