Avatar billede dtm Nybegynder
23. december 2003 - 21:12 Der er 23 kommentarer og
1 løsning

Upload-funktion + Access database

Jeg har et upload-modul, så jeg på min administrationsside, kan uploade billeder til en mappe under min hjemmeside....

Kan jeg på samme tid f.eks. tilføje navnet på billed-filen til et felt i min access-database...??
Avatar billede ellebaek Nybegynder
23. december 2003 - 22:26 #1
ja....

Det kan du godt. Hvilken komponent er der tale om?
Avatar billede dtm Nybegynder
24. december 2003 - 12:49 #2
Du tænker på upload-modulet?
Avatar billede zkiifreak Nybegynder
24. december 2003 - 15:34 #3
Jeps, ellebaek tænker på upload-komponenten.
Bruger du eksempelvis Chili!upload, bestemmer du selv navnet på filen, som det ses her, og så kan du jo bare køre en SQL-streng med det i:

saveDir = "avatars/"
    set imgBan = Server.CreateObject("Chili.Upload.1")
    On Error Resume Next 'If image size exceeds ASP Server Limit(will keep this script running)
   
    theSaveFile = saveDir & session("username") & ".jpg"
    if imgBan.FileSize <= 0 then
        response.write("Fejl: Der blev ikke angivet noget billede. Ønsker du at skifte dit billede ud til standard billedet?")%><font class="stdtext"><a href="user.asp?mode=removeavatar"> Ja </a> / <a href="user.asp?mode=insertavatar">Nej, gå tilbage</a></font><%
    elseif imgBan.FileSize > 51200 then
        response.write("Fejl: Billedet er for stort (tilladt størrelse: mellem 4KB og 50KB)")
    elseif imgBan.FileSize > 0 AND imgBan.FileSize <= 4096 then
        response.write("Fejl: Billedet er for lille (tilladt størrelse: mellem 4KB og 50KB)")
    elseif not lcase(imgBan.SourceFileExtension) = ".jpg" then
        response.write "Billedet SKAL være i JPEG format"
    elseif imgBan.FileSize > 4096 AND imgBan.FileSize <= 308224 then
        if lcase(imgBan.SourceFileExtension) = ".jpg" then
            imgBan.SaveToFile(Server.mapPath(theSaveFile))
            strSQL = "UPDATE userforum SET"
            strSQL = strSQL & " avatar = "
            strSQL = strSQL & "'"
            strSQL = strSQL & "1"
            strSQL = strSQL & "'"
            strSQL = strSQL & " WHERE ID = "
            strSQL = strSQL & "'"
            strSQL = strSQL & session("ID")
            strSQL = strSQL & "'"
            Conn.Execute(strSQL)
            response.Write("Dit billede er nu ændret!<br>")%><center><font class="stdtext"><a href="user.asp?mode=userdata">Klik her for at se din profil</a></font></center><%
            else
            response.write("Must be a JPEG image")
        end if       
    else
        response.write("Fejl!!! Kontakt webmaster!")
    end if

end if

ZkiiFreak

ellebaek ->: Yeps, nu skal farmand belære dig om ASP, hehe! Pointene er allerede begyndt rulle ind :-) Vi ses i hvert fald til Januar. Ta og skriv ngt i forummet til turen!
Avatar billede zkiifreak Nybegynder
24. december 2003 - 15:34 #4
Ovenstående var egentligt ment som et svar... God jul!
Avatar billede ellebaek Nybegynder
25. december 2003 - 12:11 #5
ligemeget hvilken komponent du benytter kan du nærmest bare sætte en sql-streng ind.

fx. kan du så hvis du benytter aspSmartUpload, kan du hente form indhold ud med:

mySmartUpload.form("formnavn")

oven i det kan du så lave en sql sætning hvor du sætter ind hvad du skal bruge.
fx.
sql = "insert into tabel(felt1, filnavn) VALUES('"&mySmartUpload.form("felt1")&"','"&file.name&"')
Avatar billede dtm Nybegynder
05. januar 2004 - 19:19 #6
Jeg bruger denne formular:

<form method="post" enctype="multipart/form-data" action="op_lille_fil_2.asp">
File:&nbsp;<input type="file" name="theFile"><br />
<input type="submit" name="enter" value=" Upload ">
</form>

Og filen "op_lille_fil_2.asp" ser sådan ud:

<%@ LANGUAGE="VBScript" %>
<%
Option Explicit
Response.Expires = -1
Response.Buffer = True
Response.Clear

Dim cdpBinaryData,cdpBoundary,cdpBoundPosition,cdpCharacter,cdpContentType,cdpCount,cdpDicUploadControl,cdpDicUploadRequest,cdpEndPosition,cdpFile,cdpFileName,cdpFilePath,cdpFilePosition,cdpFileSize,cdpFSO,cdpI,cdpName,cdpPosition,cdpPositionBoundary,cdpStartPosition,cdpTotalBytes,cdpValue

cdpTotalBytes = Request.TotalBytes
cdpBinaryData = Request.BinaryRead(cdpTotalBytes)
Set cdpDicUploadRequest = CreateObject("Scripting.Dictionary")
cdpUploadRoutine cdpBinaryData
cdpContentType = cdpDicUploadRequest("theFile")("cdpContentType")
cdpFilePath = cdpDicUploadRequest("theFile")("cdpFileName")
cdpFileName = Right(cdpFilePath,Len(cdpFilePath)-InstrRev(cdpFilePath,"\"))

If Not cdpFileName = "" Then
    cdpValue = cdpDicUploadRequest("theFile")("cdpValue")
    Set cdpFSO = Server.CreateObject("Scripting.FileSystemObject")
    Set cdpFile = cdpFSO.CreateTextFile(Server.mappath("../img/small/" & cdpFileName))
   
    For cdpI = 1 To LenB(cdpValue)
        cdpFile.Write Chr(AscB(MidB(cdpValue,cdpI,1)))
    Next
   
    cdpFile.Close
    Set cdpFile = Nothing
   
    Sub cdpUploadRoutine(cdpBinaryData)
        cdpStartPosition = 1
        cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
        cdpBoundary = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
        cdpPositionBoundary = InstrB(1,cdpBinaryData,cdpBoundary)
       
        Do until (cdpPositionBoundary=InstrB(cdpBinaryData,cdpBoundary & getByteString("--")))
            Set cdpDicUploadControl = CreateObject("Scripting.Dictionary")
            cdpPosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("Content-Disposition"))
            cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString("name="))
            cdpStartPosition = cdpPosition + 6
            cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
            cdpName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            cdpFilePosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("filename="))
            cdpBoundPosition = InstrB(cdpEndPosition,cdpBinaryData,cdpBoundary)
           
            If  cdpFilePosition <> 0 And (cdpFilePosition<cdpBoundPosition) Then
                cdpStartPosition = cdpFilePosition + 10
                cdpEndPosition =  InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
                cdpFileName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpFileName", cdpFileName
                cdpPosition = InstrB(cdpEndPosition,cdpBinaryData,getByteString("Content-Type:"))
                cdpStartPosition = cdpPosition + 14
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpContentType = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpContentType",cdpContentType
                cdpStartPosition = cdpEndPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
            Else
                cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpStartPosition = cdpPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            End If
           
            cdpDicUploadControl.Add "cdpValue" , cdpValue   
            cdpDicUploadRequest.Add cdpName, cdpDicUploadControl   
            cdpPositionBoundary=InstrB(cdpPositionBoundary+LenB(cdpBoundary),cdpBinaryData,cdpBoundary)
        Loop
    End Sub
   
    Function getByteString(StringStr)
        For cdpI = 1 To Len(StringStr)
            cdpCharacter = Mid(StringStr,cdpI,1)
            getByteString = getByteString & chrB(AscB(cdpCharacter))
        Next
    End Function
   
    Function getString(cdpBinaryString)
        getString = ""
       
        For cdpCount = 1 To LenB(cdpBinaryString)
            getString = getString & Chr(AscB(MidB(cdpBinaryString,cdpCount,1)))
        Next
    End Function
   
    cdpFileSize = cdpTotalBytes / 1024
    cdpFileSize = Round(cdpFileSize, 2)
    Response.Write("<title>The file " & cdpFileName & " was successfully uploaded! - Size: " & cdpFileSize & "</title>")
    Response.Write(cdpFileName & " Uploaded successfully! Size: " & cdpFileSize & " kb.<br />")
    Response.Write("<center><a href='op_stor_fil_1.asp'>Videre</a></center>")
End If
%>

--------------------------------------------------------------

Jeg vil så gerne have at jeg kan smide billed-filen's filnavn op i et felt i en database.....
Avatar billede ellebaek Nybegynder
05. januar 2004 - 19:23 #7
efter dette:
If Not cdpFileName = "" Then
    cdpValue = cdpDicUploadRequest("theFile")("cdpValue")
    Set cdpFSO = Server.CreateObject("Scripting.FileSystemObject")
    Set cdpFile = cdpFSO.CreateTextFile(Server.mappath("../img/small/" & cdpFileName))
   
    For cdpI = 1 To LenB(cdpValue)
        cdpFile.Write Chr(AscB(MidB(cdpValue,cdpI,1)))
    Next

indsætter du:

set rs = server.createObject("adodb.connection")
sql = "insert into tabel(felt) values('"&cdpFileName&"')"
str = din forbindelse til databasen...
rs.open str
set rs = rs.execute(sql)

Så burde du få lagt navnet i filen ind i databasen..
Du skal selv tilpasse navnet på din tabel, feltnavnet, og hvis du vil have flere oplysninger lagt ind, skal du også skrive dem ind i sql-sætningen.
Avatar billede zkiifreak Nybegynder
05. januar 2004 - 19:28 #8
Så kom du mig sq i forkøbet ellebaek.... hehe, sad lige og skrev svar, men det er præcist ovenstående jeg ville skrive!
Ses du!
Avatar billede dtm Nybegynder
05. januar 2004 - 19:28 #9
okay..... :-)

Hvordan kan sætningen se ud til at lave forbindelsen til databasen??
Avatar billede ellebaek Nybegynder
05. januar 2004 - 19:31 #10
2 sek...

så kommer den..
Avatar billede zkiifreak Nybegynder
05. januar 2004 - 19:32 #11
Kommer jo også an på, hvilken database, du bruger... Mener: MySQL eller Access...
Avatar billede dtm Nybegynder
05. januar 2004 - 19:32 #12
ok, plejer nemlig ikke at lave forbindelse til min database, på den måde...
Avatar billede dtm Nybegynder
05. januar 2004 - 19:32 #13
Access
Avatar billede ellebaek Nybegynder
05. januar 2004 - 19:33 #14
conn = "DRIVER={Microsoft Access Driver (*.mdb)}; "
conn = conn & "DBQ=" & server.mappath("dbnavn.mdb")
Avatar billede ellebaek Nybegynder
05. januar 2004 - 19:40 #15
og så hedder fobindelsen selvfølgelig conn i stedet for str som den hedder i mit eksempel..

Og Zkii -> Jeg er født hurtig ;-)
Avatar billede dtm Nybegynder
05. januar 2004 - 19:42 #16
nååå okay.... Det var også det der STR der forstyrrede mig.... hehe
Avatar billede ellebaek Nybegynder
05. januar 2004 - 19:45 #17
;-)
Avatar billede ellebaek Nybegynder
05. januar 2004 - 20:09 #18
virker det ?
Avatar billede dtm Nybegynder
05. januar 2004 - 23:51 #19
Det virker ikke....
tjek her:
www.dlaursen.dk/test/upload1.asp

Den uploader godt nok billedefilen til mappen, men ikke noget tilføjet i databasen....

se koder nedenunder
----------------------------------------------------------------------

<%@ LANGUAGE="VBScript" %>
<%
Option Explicit
Response.Expires = -1
Response.Buffer = True
Response.Clear

Dim cdpBinaryData,cdpBoundary,cdpBoundPosition,cdpCharacter,cdpContentType,cdpCount,cdpDicUploadControl,cdpDicUploadRequest,cdpEndPosition,cdpFile,cdpFileName,cdpFilePath,cdpFilePosition,cdpFileSize,cdpFSO,cdpI,cdpName,cdpPosition,cdpPositionBoundary,cdpStartPosition,cdpTotalBytes,cdpValue

cdpTotalBytes = Request.TotalBytes
cdpBinaryData = Request.BinaryRead(cdpTotalBytes)
Set cdpDicUploadRequest = CreateObject("Scripting.Dictionary")
cdpUploadRoutine cdpBinaryData
cdpContentType = cdpDicUploadRequest("theFile")("cdpContentType")
cdpFilePath = cdpDicUploadRequest("theFile")("cdpFileName")
cdpFileName = Right(cdpFilePath,Len(cdpFilePath)-InstrRev(cdpFilePath,"\"))

If Not cdpFileName = "" Then
    cdpValue = cdpDicUploadRequest("theFile")("cdpValue")
    Set cdpFSO = Server.CreateObject("Scripting.FileSystemObject")
    Set cdpFile = cdpFSO.CreateTextFile(Server.mappath("pics/" & cdpFileName))
   
    For cdpI = 1 To LenB(cdpValue)
        cdpFile.Write Chr(AscB(MidB(cdpValue,cdpI,1)))
    Next
   
        set rs = server.createObject("adodb.connection")
        sql = "insert into pictures(pic) values('"&cdpFileName&"')"
        conn = "DRIVER={Microsoft Access Driver (*.mdb)}; "
        conn = conn & "DBQ=" & server.mappath("db.mdb")
        rs.open conn
        set rs = rs.execute(sql)

   
    cdpFile.Close
    Set cdpFile = Nothing
   
    Sub cdpUploadRoutine(cdpBinaryData)
        cdpStartPosition = 1
        cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
        cdpBoundary = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
        cdpPositionBoundary = InstrB(1,cdpBinaryData,cdpBoundary)
       
        Do until (cdpPositionBoundary=InstrB(cdpBinaryData,cdpBoundary & getByteString("--")))
            Set cdpDicUploadControl = CreateObject("Scripting.Dictionary")
            cdpPosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("Content-Disposition"))
            cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString("name="))
            cdpStartPosition = cdpPosition + 6
            cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
            cdpName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            cdpFilePosition = InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("filename="))
            cdpBoundPosition = InstrB(cdpEndPosition,cdpBinaryData,cdpBoundary)
           
            If  cdpFilePosition <> 0 And (cdpFilePosition<cdpBoundPosition) Then
                cdpStartPosition = cdpFilePosition + 10
                cdpEndPosition =  InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
                cdpFileName = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpFileName", cdpFileName
                cdpPosition = InstrB(cdpEndPosition,cdpBinaryData,getByteString("Content-Type:"))
                cdpStartPosition = cdpPosition + 14
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpContentType = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
                cdpDicUploadControl.Add "cdpContentType",cdpContentType
                cdpStartPosition = cdpEndPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
            Else
                cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString(Chr(13)))
                cdpStartPosition = cdpPosition + 4
                cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
                cdpValue = getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition))
            End If
           
            cdpDicUploadControl.Add "cdpValue" , cdpValue   
            cdpDicUploadRequest.Add cdpName, cdpDicUploadControl   
            cdpPositionBoundary=InstrB(cdpPositionBoundary+LenB(cdpBoundary),cdpBinaryData,cdpBoundary)
        Loop
    End Sub
   
    Function getByteString(StringStr)
        For cdpI = 1 To Len(StringStr)
            cdpCharacter = Mid(StringStr,cdpI,1)
            getByteString = getByteString & chrB(AscB(cdpCharacter))
        Next
    End Function
   
    Function getString(cdpBinaryString)
        getString = ""
       
        For cdpCount = 1 To LenB(cdpBinaryString)
            getString = getString & Chr(AscB(MidB(cdpBinaryString,cdpCount,1)))
        Next
    End Function
   
    cdpFileSize = cdpTotalBytes / 1024
    cdpFileSize = Round(cdpFileSize, 2)
    Response.Write("<title>The file " & cdpFileName & " was successfully uploaded! - Size: " & cdpFileSize & "</title>")
    Response.Write(cdpFileName & " Uploaded successfully! Size: " & cdpFileSize & " kb.<br />")
    Response.Write("<center><a href='upload1.asp'>Videre</a></center>")
End If
%>
Avatar billede ellebaek Nybegynder
06. januar 2004 - 23:15 #20
Min kan ikke engang uploade filen...

Kører den bare scriptet til ende ?
Avatar billede dtm Nybegynder
06. januar 2004 - 23:17 #21
Jeg kan se, at den fil du har upload'et, ligger i mappen nu.....
Avatar billede dtm Nybegynder
14. januar 2004 - 00:09 #22
Er der virkelig ikke nogen der kan hjælpe??... :-(
Avatar billede dtm Nybegynder
24. januar 2004 - 19:48 #23
Har selv løst det.....
Avatar billede ellebaek Nybegynder
01. februar 2004 - 19:44 #24
hvordan løste du problemet ?
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