Avatar billede sunfresh Nybegynder
14. oktober 2004 - 19:09 Der er 8 kommentarer og
2 løsninger

fil navn i database

jeg er ved at lave et website hvor jeg gerne vil havde uploaded nogle billeder samt gemme fil navnet i en database.

jeg har fået upload til at virke men jeg kan ikke få fil navnet ind i databasen.

her er den code jeg bruger

<%
'-------------Her skabes forbindelsen til databasen---------------
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open (Server.Mappath("../db/data.mdb"))

Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
response.buffer = true
Response.Clear

byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest(RequestBin)
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("blob").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(""&filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close   
Sub BuildUploadRequest(RequestBin)
  PosBeg = 1
  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
  boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
  boundaryPos = InstrB(1,RequestBin,boundary)
  Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
  Dim UploadControl
  Set UploadControl = CreateObject("Scripting.Dictionary")
  Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
  Pos = InstrB(Pos,RequestBin,getByteString("name="))
  PosBeg = Pos+6
  PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
  Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
  PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
  PosBound = InstrB(PosEnd,RequestBin,boundary)
    If  PosFile<>0 AND (PosFile<PosBound) Then
    PosBeg = PosFile + 10
    PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
    FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    UploadControl.Add "FileName", FileName
    Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
    PosBeg = Pos+14
    PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    UploadControl.Add "ContentType",ContentType
    PosBeg = PosEnd+4
    PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
    Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
    Else
    Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
    PosBeg = Pos+4
    PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
    Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
    End If
    UploadControl.Add "Value" , Value   
    UploadRequest.Add name, UploadControl   
    BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
  Loop
End Sub
Function getByteString(StringStr)
  For i = 1 to Len(StringStr)
  char = Mid(StringStr,i,1)
  getByteString = getByteString & chrB(AscB(char))
  Next
End Function
Function getString(StringBin)
  getString =""
  For intCount = 1 to LenB(StringBin)
  getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
  Next
End Function

set rs = server.createobject("ADODB.recordset")
sql = "select * from tekst"
rs.open sql, conn, 3,3


rs("billede_01") = &filename
rs.Update



'---------------------Her lukkes forbindelsen til databasen-------------------
rs.close
Set rs = Nothing
Conn.Close
Set Conn = Nothing

%>

på forhånd tak
Avatar billede ossian Nybegynder
14. oktober 2004 - 20:07 #1
Sunfresh :-)

Det ville virkelig hjælpe hvis du skrev hvilken fejl du får..
Avatar billede michaelfp Nybegynder
14. oktober 2004 - 20:56 #2
Hvad er det du vil med koden?
  rs("billede_01") = &filename
  rs.Update
Skal recorden ændres/opdateres eller vil du oprette en ny?
Avatar billede sunfresh Nybegynder
14. oktober 2004 - 21:20 #3
det siger at den ikke kan finde siden

og den skal bare opdateres

håber i kan hjælpe
Avatar billede michaelfp Nybegynder
14. oktober 2004 - 21:29 #4
Findes der kun en post i din tabel?
Avatar billede sunfresh Nybegynder
15. oktober 2004 - 01:17 #5
lige nu er der men jeg regner med at der kommer 3-4
Avatar billede michaelfp Nybegynder
15. oktober 2004 - 15:22 #6
Følgende kode:  sql = "select * from tekst"
henter jo alle poster/records i tabellen "tekst"!!!

Og koden:
rs("billede_01") = &filename
vil sætte feltet "billede_01" = variablen Filename

Problemet er b.la, at du ikke har valgt en record at opdatere - men
hvis der p.t. kun er én record, så burden det jo virke.

Hvad hedder tabellen du vil opdatere? (hedder den tekst ??)
Hvad hedder feltet du vil opdatere? (er du sikker på det hedder billede_01 ??)
Hvordan ved du, hvilken af posterne i tabellen det er du skal opdatere?
Avatar billede sunfresh Nybegynder
16. oktober 2004 - 00:26 #7
ja alt det der ser ud til at være godt nok. problemet er at når je tilføjer noget til scriptet vil den ikke finde den
Avatar billede netro Nybegynder
16. oktober 2004 - 13:16 #8
Hvis du udskriver filnavnet, kan du så konkludere, at det ikke er en tom streng?

Hvis ja, så prøv at lave en ganske normal update. Du skriver ikke, om "billede_01" er af typen tekst eller tal, men nu går jeg ud fra, det er numerisk:

conn.Execute("Update tekst Set billede_01 = " & filename & " Where ... ")

Prøv lige at gå op i Funktioner -> Internetindstillinger -> Avanceret og fjern flubenet i "Vis meddelelser om uskadelige HTTP-fejl" (Hvis du bruger IE). Så kan du se den eksakte fejlmeddelelse.

Noget helt andet er, at dit databasedesign uden tvivl godt kunne laves bedre, idet du nu bruger en seperat kolonne til hvert eneste billede. Jeg ved selvfølgelig ikke, hvor mange billeder, du skal have liggende i hver record. Men du kunne jo overveje muligheden for at lægge alle billederne (filnavnene) i sin helt egen tabel.
Avatar billede sunfresh Nybegynder
18. oktober 2004 - 00:13 #9
ok. der var den. tak for tippet om at fjerne det flueben netro :-).
så kunne jeg finde fejlen og det var åbenbart & foran filename.

så hvis i lige gider at smide nogle svar så jeg kan få delt nogle point ud ;-)

og endnu en gang tak til alle.
Avatar billede netro Nybegynder
18. oktober 2004 - 00:28 #10
Det &-tegn havde jeg da lykkeligt overset. Sikke vi sidder og sover. Men fint det virker nu ;)
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
Kurser inden for grundlæggende programmering

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