Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 19 odgovora
  • 3.665 pregleda

Najnovija ↓

upload slike problem 08.08.2011. u 11:11 · pre 185 meseci
izmenjeno 1 put, poslednji put kenoo84 10.08.2011. u 10:11
  1. kenoo8410.08.2011. u 10:11zapis iz teksta poruke
#1
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 :
Re: upload slike problem 08.08.2011. u 11:35 · pre 185 meseci #2
..cini mi se da ti fali nesto kao r.Slika=....
Sviđa mi se1
Re: upload slike problem 08.08.2011. u 11:52 · pre 185 meseci
izmenjeno 1 put, poslednji put kenoo84 10.08.2011. u 10:11
  1. kenoo8410.08.2011. u 10:11zapis iz teksta poruke
#3
Pokusao sam neke izmjene ne znam da li je to uredu ?
Re: upload slike problem 08.08.2011. u 12:17 · pre 185 meseci #4
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
    {

    }
}
Sviđa mi se1
Re: upload slike problem 08.08.2011. u 12:43 · pre 185 meseci #5
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 ?

}
Re: upload slike problem 08.08.2011. u 13:11 · pre 185 meseci #6
^ 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" />
Sviđa mi se1
Re: upload slike problem 08.08.2011. u 13:27 · pre 185 meseci #7
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 ?

Re: upload slike problem 08.08.2011. u 14:59 · pre 185 meseci #8
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";
//...
}
Sviđa mi se1
Re: upload slike problem 08.08.2011. u 15:13 · pre 185 meseci #9
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 ?
Re: upload slike problem 08.08.2011. u 15:25 · pre 185 meseci
izmenjeno 1 put, poslednji put dejanet 08.08.2011. u 15:35
  1. dejanet08.08.2011. u 15:35zapis iz teksta poruke
#10
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..
Sviđa mi se1
Re: upload slike problem 08.08.2011. u 15:45 · pre 185 meseci #11
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.
Potpis
Nebojsa Milanovic:
-Trumpa smatram vrhunskim predsednikom i voleo bih da živim u državi na čijem je on čelu
-Rusija ne laže, ne vodi osvajačke ratove
-Trump je svetla tačka u USA blatu
-Elon Musk, možda najpametniji i najtrezveniji Amerikanac
Re: upload slike problem 08.08.2011. u 22:52 · pre 185 meseci #12
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 ?
Re: upload slike problem 08.08.2011. u 23:28 · pre 185 meseci #13
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";
}


Sviđa mi se1
Re: upload slike problem 08.08.2011. u 23:53 · pre 185 meseci #14
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
Re: upload slike problem 08.08.2011. u 23:59 · pre 185 meseci #15
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 );
  }

}
Sviđa mi se1
Re: upload slike problem 09.08.2011. u 00:08 · pre 185 meseci #16
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 );
}

}
Re: upload slike problem 09.08.2011. u 00:19 · pre 185 meseci #17
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
Sviđa mi se1
Re: upload slike problem 09.08.2011. u 00:37 · pre 185 meseci #18
Samo mi ovdje javlja da je slika = null

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


Re: upload slike problem 09.08.2011. u 09:52 · pre 185 meseci #19
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
Sviđa mi se2
Re: upload slike problem 09.08.2011. u 11:42 · pre 185 meseci
izmenjeno 1 put, poslednji put kenoo84 10.08.2011. u 10:12
  1. kenoo8410.08.2011. u 10:12zapis iz teksta poruke
#20
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.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme