webForumDet fria alternativet

AspUpload version 2

ASPur ASP

14 svar · 275 visningar · startad av mikael_a

Medlem sedan mars 2000475 inlägg
Frågan#1

tack ni som har försökrt att hjälpa mig att spara en bild i en data bas... har nog gett upp nu. gjorde en ny .asp sida istället med följande kod:<%

'=========================================================================
' skapar objekt för komponenten AspUpload
'=========================================================================

Set Upload = Server.CreateObject("Persits.Upload.1")

'=========================================================================
' skapar objekt för filen som har laddats upp
'=========================================================================

set file = upload.Form("theFile")

'=========================================================================
' kontrollerar om filen verkligen är en fil.
'=========================================================================

'If file.IsFile then

'=========================================================================
' gif eller jpg bild samt storleken på filen.
' hämtar data från forumuläret som innehåller beskrivningen av filen.
'=========================================================================

filtyp = ContentType
filstorlek = Size
beskrivning = upload.Form("beskrivning") 

'=========================================================================
' kontrollerar den uppladdade filen är gif eller jpeg.
' om ej avsluta
'=========================================================================

If filtyp = "image/gif" or filtyp = "image/pjpeg" then

'=========================================================================
' öppnar koppling till databasen
'=========================================================================

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=d:\\Inetpub\\wwwroot\\test\\data\\upload.mdb"

'=========================================================================
' beskrivningen och storleken till bilden.
'=========================================================================

SQLStmt = "Insert into upload "
SQLStmt = SQLStmt  & " (beskrivning, storlek)"
SQLStmt = SQLStmt  & " Values('" & beskrivning & "', " & filstorlek & ")"
Connection.Execute(SQLStmt)
SET SQLStmt = Nothing

'=========================================================================
' plockar ut Id-numret för senaste införandet i databasen och
' spara det i variablen "senasteid"
'=========================================================================

SQLStmt = "Select Max(Id) as senasteid from upload"
SET RS = Connection.Execute(SQLStmt)
senasteid = RS("senasteid")
RS.Close
SET SQLStmt = Nothing

'=========================================================================
' skapar ett nytt unikt filnamn som består av id-nummer och
' filändelse som beror på vilken typ av fil det är.
'=========================================================================

filnamn = "bild" & senasteid & "." & Extension

'=========================================================================
' Uppdatera databasen och för in det nya namnet på filen.
'=========================================================================

SQLStmt = "Update upload "
SQLStmt = SQLStmt  & " SET Filnamn = '" & Filnamn & "'"
SQLStmt = SQLStmt  & " Where Id = " & senasteid
Connection.Execute(SQLStmt)
SET SQLStmt = Nothing

'=========================================================================
' Spara bilden på webbservern.
'=========================================================================

'file.SaveVirtual("/test")

'file.Save(Request.ServerVariables( "APPL_PHYSICAL_PATH" ) & "\\uploadbilder\\" & filnamn)

Connection.Close

End if
'End If

%>

men sökvägen sparas inte... inga fel mess... den fortsätter bara html koden rätt ut, och skriver sedan databasen uppdaterad... men det är ingen bild...

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19998 577 inlägg
#2

Har du testat att skriva ut sökvägen? brukar hjälpa...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu

Medlem sedan mars 2000475 inlägg
#3

det har jag väll gjort?

'file.SaveVirtual("/test")

'file.Save(Request.ServerVariables( "APPL_PHYSICAL_PATH" ) & "\\uploadbilder\\" & filnamn)

jag använde bara ' för att testa olika sätt, men inget fungerade, har tagit bort ' i min version :)

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19998 577 inlägg
#4

Vad jag menar med att skriva ut är att lägger till 'Response.write' för en sökväg så att du ser den som text i dokumentet när du kört sidan...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu

Medlem sedan mars 2000475 inlägg
#5

vill du visa vad du menar?

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19998 577 inlägg
#6

Istället för:
file.Save(Request.ServerVariables( "APPL_PHYSICAL_PATH" ) & "\\uploadbilder\\" & filnamn)

så skriver du:
Response.write Request.ServerVariables( "APPL_PHYSICAL_PATH" ) & "\\uploadbilder\\" & filnamn

Nu kommer inte koden att fungera, men du kommer se vad som är fel, så att du kan åtgärda det... sedan ändrar du tillbaks till vad som blir rätt...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu

Medlem sedan mars 2000475 inlägg
#7

har skrivit som du beskrev ovan, men jag fick inget fel mess...

det verkar som om koden "hoppar" över den raden...

/micke

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19998 577 inlägg
#8

... Och stod det inte nått annat på sidan när du körde den?

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu

Medlem sedan dec. 19996 721 inlägg
#9

Jag kanske inte hnänger med, men vad jag kan se så ska inget hända när den här koden körs.

Du har en if-sats....

If filtyp = "image/gif" or filtyp = "image/pjpeg" then

men filtyp är tomt, så det som ligger i if-satsen utförs aldrig.

Variabeln är tom, eftersom den tilldelas från en annan tom variabel, nämligen ContentType.

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango

Medlem sedan mars 2000475 inlägg
#10

jo, det ser jag nu, men hur kollar man annars om en bild är gif eller jpg?

File.conenttype fungerar inte.

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19996 721 inlägg
#11

Du skapar file-objektet på fel sätt.

set file = Upload.Files("theFile")

ska det vara. File-objektet har dessutom en egenskap (property) som heter ImageType, som är bekväm att använda.

If File.ImageType <> "GIF" and File.ImageType <> "JPG" Then
Response.Write "Filen måste vara av typen JPEG eller GIF"
else
gör allt som ska göras......

Jag har själv aldrig använt ASPUpload, men jag tror att Files-collection-objektet finns tillgängligt även om man inte kör en Upload.Save.

[Redigerat av emission den 24 apr 2000]

Medlem sedan mars 2000475 inlägg
#12

hej,

jag har rättat till det felet, allt fungerar nu förutom "fil extension" alltså bilderna sparas som bild + senaste id + ext , men de sparas bara som bild10. (tex) den känner inte av om det är en jpg eller en gif...

har testat att bara lägga till .jpg efter där bilden kopieras, men det hjälper inte...

sökvägen + storlek sparas riktigt.

<%

Set Upload = Server.CreateObject("Persits.Upload.1")

Upload.Save("d:\\Inetpub\\wwwroot\\test\\uploadbilder")

Set File = Upload.Files(1)

filtyp = File.ImageType
filstorlek = File.Size
beskrivning = upload.Form("beskrivning") 

If filtyp = "GIF" or filtyp = "JPG" or filtyp = "gif" or filtyp = "jpg" Then

Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (\*.mdb)};dbq=d:\\Inetpub\\wwwroot\\test\\data\\upload.mdb"

SQLStmt = "Insert into upload "
SQLStmt = SQLStmt  & " (beskrivning, storlek)"
SQLStmt = SQLStmt  & " Values('" & beskrivning & "', " & filstorlek & ")"
Connection.Execute(SQLStmt)
SET SQLStmt = Nothing

SQLStmt = "Select Max(Id) as senasteid from upload"
SET RS = Connection.Execute(SQLStmt)
senasteid = RS("senasteid")
RS.Close
SET SQLStmt = Nothing

If file.ImageType = "gif" Then
Extension = "gif"
elseif file.ImageType = "jpg" Then
Extension = "jpg"
elseif file.ImageType = "GIF" Then
Extension = "jpg"
elseif file.ImageType = "jpg" Then
Extension = "jpg"
End If

filnamn = "bild" & senasteid & "." & jpg

For Each File in Upload.Files
File.Copy "d:\\Inetpub\\wwwroot\\test\\uploadbilder\\bild" & senasteid & "." & jpg
File.Delete 
Next

SQLStmt = "Update upload "
SQLStmt = SQLStmt  & " SET Filnamn = '" & Filnamn & "'"
SQLStmt = SQLStmt  & " Where Id = " & senasteid
Connection.Execute(SQLStmt)
SET SQLStmt = Nothing

Connection.Close

End If

%>

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19996 721 inlägg
#13

senasteid & "." & jpg

borde vara

senasteid & ".jpg"

vilket du säkert är med på, men använd

extension="." & LCase(File.Imagetype)

och

senasteid & extension

i stället

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango

Medlem sedan mars 2000475 inlägg
#14

tack så mycket för hjälpen, nu fungerar det äntligen...

men är det en fördel att lägga in hela bilden också i databasen? tar ju en himla mycket plats.

du kan titta in på http://www.micke-anna.nu/video/ så ser du sidan ni har hjälpt mig med.

------------------
Micke & Annas Sajt
micke@micke-anna.nu

Medlem sedan dec. 19996 721 inlägg
#15

Nä, det är helt onödigt att lägga in bilden i databasen också.

psst! topplistan stavas med två "p", och filmbolag är ett ord

265 ms totalt · 3 externa anrop · v20260731065814-full.25f56b17
0 ms — hämta forumlista (cache)
127 ms — hämta statistik (db)
136 ms — hämta tråd, inlägg och bilagor (db)