bildTyp = SafeSQL(Upload.Files(1).ImageType)
skulle jag gissa på en snabb läsning på http://www.aspupload.com/
29 svar · 842 visningar · startad av Vinnaren
Hej
Jag behöver hjälp med min bilduppladdning. har hittills följande kod:
Set Upload = Server.CreateObject("Persits.Upload.1")
Count = Upload.Save("c:\upload")
Upload.SetMaxSize 50000
Upload.OverwriteFiles = False
bildNamn = SafeSQL(Upload.Files(1).ExtractFileName)
bildAgare = CLng(session("userID"))
bildTyp = ??
objConn.execute("INSERT INTO bildHistorik (bildAgare, bildNamn, bildTyp)" & " VALUES (" & bildAgare & ", '" & bildNamn & "', '" & bildTyp & "')")
Response.Write ""&bildNamn&" är nu sparad"
Det man laddar upp sparas, men nu vill jag att filen man laddar upp ska få ett ID nummer av databasen som filnamn. Sen så ska filnamnet sparas i databasen vilket det gör, men jag vill även att filtypen ska sparas i databasen i kolumnen bildTyp typ gif, png osv.
Hur löser jag dessa två saker??
Tacksam för all hjälp
bildTyp = SafeSQL(Upload.Files(1).ImageType)
skulle jag gissa på en snabb läsning på http://www.aspupload.com/
ok, men hur får jag ut den genererade PK i databasen när jag sparar bilden där?? Så man vet vilket namn bilden ska ha???
va?
Du har sparat sökvägen på databasen inte bilden, bilden har du laddat upp på c:\upload på din Server... om vi säger nu att din sida ligger rakt på c:\ så får du göra en databas öppning med SELECT * From bildHistorik
Sen göra något recordset som loopar ut alla bilder med något i stil med:
do until rs.eof
response.write "<img src=""upload\" & rs("bildNamn") &""" alt=""""/>"
rs.movenext
loop
hmm
jag måste ju spara bildens namn i databasen först. Sen så ska bilden få ett nytt namn, det ID-nummer som den fick i databasen
läs http://www.aspupload.com/ har för mig dom har en bra tutorial om detta..
ok, har läst den ett antal gånger. Men problemet just nu är hur får jag ut det ID som bilden får när man sparar den i databasen?
Ett alternativ är ju att direkt efter insert hämta ut id med select @@identity, och sedan använda FSO för att byta namn på filen som har laddats upp.
Om man inte orkar göra på rätt sätt, dvs göra insert innan dess att man sparar filen alltså.
ok, har nu följande kod:
Set Upload = Server.CreateObject("Persits.Upload")
bildNamn = SafeSQL(Upload.Files.ExtractFileName)
bildAgare = CLng(session("userID"))
bildTyp = SafeSQL(Upload.Files.ImageType)
'####Kontrollerar om namnet på filen redan finns
Set objRS = objConn.Execute("SELECT * FROM bildHistorik WHERE bildNamn= "&bildNamn)
IF objRS.EOF THEN
objConn.execute("INSERT INTO bildHistorik (bildAgare, bildNamn, bildTyp)" & " VALUES (" & bildAgare & ", '" & bildNamn & "', '" & bildTyp & "')")
'Hämtar ut bildens id nummer
Set objRS1 = objConn.Execute("SELECT bildID FROM bildHistorik WHERE bildNamn= "&bildNamn)
IF NOT objRS1.EOF THEN
Count = Upload.Save("c:\upload\" & objRS("bildID") & "." & Upload.Files.ImageType & "")
Upload.SetMaxSize 50000
Upload.OverwriteFiles = False
Response.Write ""&bildNamn&" är nu sparad"
ELSE
Response.Write "Bilden kunde inte sparas i databasen"
END IF
ELSE
Response.Write "Filnamnet finns redan i databasen"
END IF
Men jag får följande felmeddelande när bilden ska sparas:
Object doesn't support this property or method: 'Upload.Files.ExtractFileName'
på raden:
bildNamn = SafeSQL(Upload.Files.ExtractFileName)
@@identity var inget att tänka på för att hämta rätt id?
Dessutom måste du lära dig att ha apostrofer runt strängvärden (bildnamn till exempel) i dina SQL-frågor.
I tillägg tror jag minsann att du måste spara filen till minne först (typ utan att ange sökväg) och sedan kan du komma åt dess egenskaper. När du är klar med allt annat kan du så spara till disk.
provar detta sätt först för att få ut ID:t.
har nuu följande kod:
Count = Upload.Save("c:\temp")
bildNamn = SafeSQL(Upload.Files.ExtractFileName)
bildAgare = CLng(session("userID"))
bildTyp = SafeSQL(Upload.Files.ImageType)
'####Kontrollerar om namnet på filen redan finns
Set objRS = objConn.Execute("SELECT * FROM bildHistorik WHERE bildNamn= '"&bildNamn&"'")
IF objRS.EOF THEN
objConn.execute("INSERT INTO bildHistorik (bildAgare, bildNamn, bildTyp)" & " VALUES (" & bildAgare & ", '" & bildNamn & "', '" & bildTyp & "')")
'Hämtar ut bildens id nummer
Set objRS1 = objConn.Execute("SELECT bildID FROM bildHistorik WHERE bildNamn= '"&bildNamn&"'")
IF NOT objRS1.EOF THEN
Upload.SetMaxSize 50000
Upload.OverwriteFiles = False
Upload.Files(1).MoveVirtual ("c:\upload\" & objRS("bildID") & "." & Upload.Files.ImageType & "")
Response.Write ""&bildNamn&" är nu sparad"
ELSE
Response.Write "Bilden kunde inte sparas i databasen"
END IF
ELSE
Response.Write "Filnamnet finns redan i databasen"
END IF
Men jag får samma felmeddelande som innan. Bilden sparas dock i temp mappen, men sen kommer felmeddelandet:
Object doesn't support this property or method: 'Upload.Files.ExtractFileName'
Du har ju ändrat på din kod. Files är en collection. Så här har du skrivit i ditt första inlägg:
bildNamn = SafeSQL(Upload.Files(1).ExtractFileName)
oki, nu kommer jag ialla fall ner till raden
Upload.Files(1).MoveVirtual ("c:\upload\" & objRS("bildID") & "." & Upload.Files.ImageType & "")
innan det kraschar. Får nu felmeddelandet:
Exception occurred.
hjälpte inte att ändra, får samma felmeddelande :q
Varför använder du MoveVirtual och anger en full sökväg?
hmm, för mycket copy & paste ;)
Har nu provat:
File.Move ("c:\upload\" & objRS("bildID") & "." & Upload.Files(1).ImageType & "")
och
Upload.Move ("c:\upload\" & objRS("bildID") & "." & Upload.Files(1).ImageType & "")
men bägge ger samma felmeddelande som innan §jr
Upload.Move ("c:\upload\" & objRS("bildID") & "." & Upload.Files(1).ImageType & "")
du behöver inte ha & "" i slutet... annars måste du använda dig av & """
Har du skapat objektet File då?
(Du kan inte använda objektet Upload, metoden Move tillhör file-objektet)
får nu felmeddelandet:
Object doesn't support this property or method: 'Upload.Move'
på samma rad som tidigare