Avatar billede jesperbaldur Nybegynder
06. april 2007 - 17:26 Der er 12 kommentarer og
1 løsning

Upload billede til database

Jeg har en mssql database med en tabel kaldet tabel1. I denne tabel er der et felt kaldet billede1 med typen image.

Jeg vil nu gerne kunne uploade et billede til denne database. Men hvordan kan dette gøres?
Avatar billede kalp Novice
06. april 2007 - 17:28 #1
Billedet skal laves om til et byte array.. når det er gjort kan det gemmes via. command objektets parameters.
Avatar billede jesperbaldur Nybegynder
07. april 2007 - 11:43 #2
Ja det har jeg fået til at virke. Det hele fungerer sådan set fint nok i en standard windows applikation. Men jeg kan ikke få det til at virke på en webform, problemet er at jeg ikke ved hvilke muligheder der er når det skal være på en hjemmeside.
Jeg har prøvet at placere en file komponent på webformen:
<input id="File1" runat="server" name="File1" type="file" />


Men når jeg har lagt hjemmesiden op på min server får jeg følgende fejl:

"Could not find a part of the path 'C:\Dokumenter\Billeder\DSC00146.JPG'"

Skyldes det at komponenten forventer at filen ligger på serveren hvor hjemmesiden ligger placeret og ikke på klienten hvor browseren er åben?
Avatar billede kalp Novice
07. april 2007 - 14:26 #3
prøv med klassen WebClient til upload.
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=115

virker nok bedre
Avatar billede arne_v Ekspert
08. april 2007 - 01:58 #4
Avatar billede jesperbaldur Nybegynder
08. april 2007 - 20:03 #5
Er ved at få skruet noget sammen der virker tror jeg.
Men jeg har et par småproblemer.
1. I min tabel er der plads til at gemme 2 billeder. Det skal efterfølgende være muligt at slette et eller begge af disse billeder.
Men hvilkenn værdi giver man et felt af typen 'image' hvis man ønsker at fjerne billedet igen. Kan man give det værdien null ?

2. Når jeg skal læse billederne fra databasen, henter jeg billedet fra databasen og skriver det til en fil på serveren, hvorefter jeg giver stien til dette billede til en image kontrol hvor billedet vises. Dette gøres ved denne kode:

Dim data() As Byte = myReader("Billede2")
Dim s As New FileStream(Server.MapPath(Request.ApplicationPath) & myReader("id") & ".jpg", FileMode.Create)
s.Write(data, 0, data.Length)
s.Close()
Image2.ImageUrl = Server.MapPath(Request.ApplicationPath) & myReader("id") & "2" & ".jpg"

Men findes der ikke en smartere måde at gøre dette på? Tænker på at det er lidt spild af resurser at skulle udtrække et billede fra en database for derefter at skulle skrive den til en fil. Kan dette ikke gøres uden dette "mellemled"?
Avatar billede arne_v Ekspert
09. april 2007 - 00:16 #6
re 1)

hvis du har en række per billede bruger du DELETE

hvis du har 2 billede kolonner bruger du UPDATE SET felt = NULL

re 2)

jo - det kan godt lade sig gøre at streame direkte fra database til browser
Avatar billede jesperbaldur Nybegynder
17. april 2007 - 12:10 #7
Jeg har fået det til at virke. Pånær det med at streame direkte fra database til browser. Har du en beskrivelse af hvordan dette kan gøres?
Avatar billede arne_v Ekspert
18. april 2007 - 01:08 #8
en code snippet:

    SqlConnection con = new SqlConnection(CONNSTR);
    con.Open();
    SqlCommand sel = new SqlCommand("SELECT pic FROM od WHERE id = " + id, con);
    byte[] b = (byte[])sel.ExecuteScalar();
    con.Close();
    Response.ContentType = "application/octet-stream";
    Response.AddHeader("Content-Disposition", "attachment; filename=\"" + id + ".pic\"");
    Response.BinaryWrite(b);
Avatar billede arne_v Ekspert
18. april 2007 - 01:08 #9
ContentType og Content-Disposition skal nok være anderledes ...
Avatar billede arne_v Ekspert
17. juni 2007 - 05:47 #10
jesper ?
Avatar billede arne_v Ekspert
21. juli 2007 - 16:39 #11
??
Avatar billede jesperbaldur Nybegynder
15. januar 2008 - 10:07 #12
ups, det må du undskylde, gider du skrive et svar. Jeg fik det forresten til at virke :-)

Gider du skrive et svar
Avatar billede arne_v Ekspert
16. januar 2008 - 02:06 #13
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester