Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

upload slike problem

[es] :: .NET :: ASP.NET :: upload slike problem

[ Pregleda: 2203 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.46.*



+9 Profil

icon upload slike problem08.08.2011. u 10:11 - pre 153 meseci
Pozdrav svima, danima pokusavam rjesiti problem upload-a slike ali nikako ne ide, svi podaci se snime u bazu bez problema a gdje je slika i dalje vrijednost je NULL. Koristim ADO.NET za konekciju na bazu a kod je u prilogu :




[Ovu poruku je menjao kenoo84 dana 10.08.2011. u 10:11 GMT+1]
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 10:35 - pre 153 meseci
..cini mi se da ti fali nesto kao r.Slika=....
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.46.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 10:52 - pre 153 meseci
Pokusao sam neke izmjene ne znam da li je to uredu ?



[Ovu poruku je menjao kenoo84 dana 10.08.2011. u 10:11 GMT+1]
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 11:17 - pre 153 meseci
Ja preferiram da slike i file-ove uploadujem na server kao file, a reference drzim u bazi, bilo kako bilo, a za tvoj problem bi pokusao ovako nesto:

Prvo atribut Slika u tabeli baze treba da ti bude blob (opet moze da zavisi od tipa db servera)..
Drugo sliku bi pretvorio byte..

Code:
//metod koji pretvara sliku u byte
private byte[] ConvertImageToByteArray(System.Drawing.Image imageToConvert,
                                       System.Drawing.Imaging.ImageFormat formatOfImage)
{
    byte[] result;
    try
    {
        using (MemoryStream ms = new MemoryStream())
        {
            imageToConvert.Save(ms, formatOfImage);
            result= ms.ToArray();
        }
    }
    catch (Exception) { throw; }
    return result;
}


Code:
//Upload image u db
protected void btnSave_Click(object sender, EventArgs e)
{
    System.Drawing.Image imag = System.Drawing.Image.FromStream(
        fuSlika.PostedFile.InputStream);
    try
    {
         //.... 
         r.Slika=ConvertImageToByteArray(imag, System.Drawing.Imaging.ImageFormat.Jpeg);
         //....

    }
    finally
    {

    }
}
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.46.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 11:43 - pre 153 meseci
Uradio sam po ovim uputama i sada mi snimi sve u bazu a gdje je slika pise <Binary data>, vjerovatno jer smo pretvorili u byte, nadam se da je ovo uredu. Sada da provjerim da li je slika dobro ucitana u bazu i da je mogu otvoriti, mislio sam da je ucitam u Image controlu sa toolboxa ali ne znam kako da pozovem tu funkciju. Na drugoj stranici zelim ispis podataka koje smo prethodno snimili u bazu i to na ovaj nacin :

protected void Page_Load(object sender, EventArgs e)
{
if (radnik == null)

labelIme.Text = radnik.Ime;
labelPrezime.Text = radnik.Prezime;
labelAdresa.Text = radnik.Adresa;
labelEmail.Text = radnik.Email;
imgSlika - ovdje mi treba da ucita sliku iz baze u image kontrolu , kako da je pozovem ?

}
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 12:11 - pre 153 meseci
^ Extra..

Za citanje(nesto komplikovanije, mozda ima jednostavniji put) ti treba posebna strana, npr. kreiraj PrikaziSliku.ashx poseban file(item) u tvom projektu, gde ce on sluziti umesto image url lokacije, sto je u stvari trik. Znaci:

Kreiraj PrikaziSliku.ashx,

Pa u njoj(.cs) ubaci kod:

Code:
public void ProcessRequest (HttpContext context)
{
  try{

   int idradnika=context.Request.QueryString["idradnika"];//citas url parametar        
   Radnik r = getRadnikByID(idradnika);  //metod za dobijanje radnika po id ili nekom drugom key polju
   if (r != null) {
     context.Response.ContentType = "image/jpg";
     context.Response.BinaryWrite((byte[])r.Slika);
  }
  } 
   catch (Exception ex)
  {

  }
}


..dok ce ti na tvojoj aspx strani za prikaz podataka o radniku biti (na primer za idradnika=1):

Code:
<asp:Image ID="imgSlika " ImageUrl="PrikaziSliku.ashx?idradnika=1" runat="server" />
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.46.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 12:27 - pre 153 meseci
Hvala ti na ovom postu i ovo je super, samo sto ja vec imam stranicu na kojoj prikazujem sve radnike, odnosno svakog radnika koji se prijavi i na njegovoj stranici se ispisuju njegovi podaci, tako sam mislio i sliku staviti pa da svaki radnik prilikom prijave ima i svoju sliku na profil stranici. Kada se prijavim na profil stranici ispisuju se moji podaci i tako za svakog radnika kada se prijavi, i samo jos treba sliku da prikazuje u imgSlika controli, to sam mislio pojednostaviti, i da treba mi po prijavljenomRadniku da ispisuje ne po ID, ovako :

protected void Page_Load(object sender, EventArgs e)
{
if (Prijavljeniradnik == null)

labelIme.Text = Prijavljeniradnik.Ime;
labelPrezime.Text = Prijavljeniradnik.Prezime;
labelAdresa.Text = Prijavljeniradnik.Adresa;
labelEmail.Text = Prijavljeniradnik.Email;

- i ovo radi super, svaki prijavljeniRadnik ima upisane svoje podatke, samo jos hocu da sliku ubacim ovde za prijavljenog radnika, ne znam da li moze ovako jednostavno samo imgSlika = nesto ili ipak na neki drugi nacin ?

 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 13:59 - pre 153 meseci
Probaj ovako (malo napamet), pristup preko session objecta:

PrikaziSliku.ashx

Code:
public void ProcessRequest (HttpContext context)
{
  try{

   object slika = context.Session["slika"];  //slika iz sesije
   if (slika  != null) {
     context.Response.ContentType = "image/jpg";
     context.Response.BinaryWrite((byte[])slika );
  }
  } 
   catch (Exception ex)
  {

  }
}


dok ces u glavnom kodu imati:
Code:
protected void Page_Load(object sender, EventArgs e)
{
//...
Session["slika"]=Prijavljeniradnik.Slika;
imgSlika.ImageUrl="PrikaziSliku.ashx";
//...
}
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.45.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 14:13 - pre 153 meseci
Malo me zbunjuje ovaj dio :

imgSlika.ImageUrl="PrikaziSliku.ashx";

- ja zelim da iz baze ucitam sliku u imgSlika, znaci da se prikaze u controli image. Kako to izvesti ?
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 14:25 - pre 153 meseci
Mislim da ne mozes direktno, odnosno ona(kontrola) ocekuje putanju url do slike na disku, a to se simulira preko ashx handler file-a..

U 3rd party komponentama zato imas "binary image" kontrole, koje extenduju ovu standardnu Image kontrolu koju koristis u gore projektu i koje automatski bez gore programiranja prihvataju blob polje iz baze, ali samo u tim komercijalnim komponentama.

Znaci kreiraj PrikaziSliku.ashx u tvom projektu i dodaj prvi code, mislim probaj, vrlo verovatno da ce raditi, radi se o par linija koda..

[Ovu poruku je menjao dejanet dana 08.08.2011. u 15:35 GMT+1]
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12846



+4783 Profil

icon Re: upload slike problem08.08.2011. u 14:45 - pre 153 meseci
Pa, ti mozes imati jednu web stranu, npr. GetImage.aspx koja ce raditi ovako nesto:
Code (csharp):
System.Drawing.Image image;
image = GetImageFromDB(QueryString["ImageID"]);
Response.ContentType = "image/jpeg";
image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);


I onda koristis <img src="GetImage.aspx?ImageID=137" />
Naravno, dodatno je potrebno napraviti GetImageFromDB funkciju koja cita sliku iz baze na osnovu ID-a.


Inace, moze se slika i integrisati u samu html stranu ali nije bas prakticno.
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.38.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 21:52 - pre 153 meseci
Pokusavam cijeli dan da sa ovim kodom sto ste postavili ali ne ide i ne ide. Pokusao sam i na ovaj nacin da napravim PrikaziSliku.ashx

public void ProcessRequest (HttpContext context)
{
try{

int idradnika=context.Request.QueryString["idradnika"];//citas url parametar
Radnik r = getRadnikByID(idradnika); //metod za dobijanje radnika po id ili nekom drugom key polju
if (r != null) {
context.Response.ContentType = "image/jpg";
context.Response.BinaryWrite((byte[])r.Slika);
}
}
catch (Exception ex)
{

}
}

i na profil strani dodam imgSlika.ImageUrl = "PrikaziSliku.ashx"; ali nista se ne desava, znaci slika se ne ucitava. Isto sam pokusao i sa sesijom uraditi ali opet isto, podaci se ucitaju ali slika ne, ne znam gdje grijesim ?
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 22:28 - pre 153 meseci
Cekaj rekao si da nemas getRadnikByID metod...

Pokusaj preko sesije:

1. Napravi PrikaziSliku.ashx

Code:
public void ProcessRequest (HttpContext context)
{
  try{

   object slika = context.Session["slika"];  //slika iz sesije
   if (slika  != null) {
     context.Response.ContentType = "image/jpg";
     context.Response.BinaryWrite((byte[])slika );
  }
  } 
   catch (Exception ex)
  {

  }
}


2. Na tvojoj strani za prikaz radnika:

Code:
protected void Page_Load(object sender, EventArgs e)
{
if (Prijavljeniradnik == null)

labelIme.Text = Prijavljeniradnik.Ime;
labelPrezime.Text = Prijavljeniradnik.Prezime;
labelAdresa.Text = Prijavljeniradnik.Adresa;
labelEmail.Text = Prijavljeniradnik.Email; 

Session["slika"]=Prijavljeniradnik.Slika;
imgSlika.ImageUrl="PrikaziSliku.ashx";
}


 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.38.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 22:53 - pre 153 meseci
Pokusao sam na ovaj nacin sada i preko sesije ali opet isto, sve ok radi nigdje gresku ne javlja, samo kada treba prikazati sliku nema je, svi podaci su tu ali slike nema, ne znam sta bi moglo biti, kao da ne postoji u bazi pa je ne ucita nikako a sve sam ispravno uradio
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 22:59 - pre 153 meseci
Ne prijavljuje gresku jer ti je pod try catch, treba da koristis breakpointe ili ukini try catch ako ti je lakse i da li u opste dodje do ProcessRequest :

Code:
public void ProcessRequest (HttpContext context)
{
   object slika = context.Session["slika"];  //slika iz sesije
   if (slika  != null) {
     context.Response.ContentType = "image/jpg";
     context.Response.BinaryWrite((byte[])slika );
  }

}
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.38.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 23:08 - pre 153 meseci
Evo greske koju javi

public void ProcessRequest (HttpContext context)
{
object slika = context.Session["slika"]; - Object reference not set to an instance of an object.
if (slika != null) {
context.Response.ContentType = "image/jpg";
context.Response.BinaryWrite((byte[])slika );
}

}
 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem08.08.2011. u 23:19 - pre 153 meseci
To znaci da je Session["slika"] null ili nije definisana, tj. treba preko breakpointa da pratis izvrsenje programa step by step, pa da proveris:

- da li se Page_Load , tj glavna strana, izvrsava pre ProcessRequest
- i da li u glavnoj strani deo Session["slika"]=Prijavljeniradnik.Slika; , da li slika iz baze (Prijavljeniradnik.Slika) ima neku vrednost ili je null
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.38.*



+9 Profil

icon Re: upload slike problem08.08.2011. u 23:37 - pre 153 meseci
Samo mi ovdje javlja da je slika = null

object slika = context.Session["slika"];


 
Odgovor na temu

dejanet
Beograd

Član broj: 19240
Poruke: 1181



+835 Profil

icon Re: upload slike problem09.08.2011. u 08:52 - pre 153 meseci
Da, ne salje sesiju, malo proverio kod sebe i u PrikaziSliku.ashx, treba da dodas/izmenis sledece da bi sesija radila:

u PrikaziSliku.ashx

1. dodaj
using System.Web.SessionState;

2. ovo
public class PrikaziSliku : IHttpHandler
prepravi u ovo
public class PrikaziSliku : IHttpHandler, IRequiresSessionState


Posle ovih izmena session koji si napunio na glavnoj strani treba da ima vrednosti u PrikaziSliku.ashx, tj da vraca sliku u imgSlika
 
Odgovor na temu

kenoo84
Banja Luka

Član broj: 288833
Poruke: 13
109.175.47.*



+9 Profil

icon Re: upload slike problem09.08.2011. u 10:42 - pre 153 meseci
E to je to, sada radi super i to je ono sto sam htio napraviti, uradio sam resize slike i na profilu pokazuje tacno te dimenzije koje sam odredio, hvala deja puno na pomoci.

[Ovu poruku je menjao kenoo84 dana 10.08.2011. u 10:12 GMT+1]
 
Odgovor na temu

[es] :: .NET :: ASP.NET :: upload slike problem

[ Pregleda: 2203 | Odgovora: 19 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.