AspUpload Del 2 - arbeta med filen
Förord
Då var det dags för andra delen i serien AspUpload. Har du inte läst del 1 så råder jag dig att göra det pga att jag kommer utgå ifrån att du har dom kunskaperna som ingick i den. I denna del ska vi gå igenom dels lite repetition och utveckling av del 1, dels hur vi kan bestämma vilken sorts filer som får laddas upp (ex .jpg eller .gif) och vilken pixel storlek bilderna får ha. Sen ska vi även gå igenom hur man får bilderna att hamna i olika mappar på servern. Som vanligt så vid frågor angående artikeln så maila mig på support@graphvision.com.Innehåll
»»
»
»
»
»
»
Relaterade artiklar
» AspUpload del 1 - Ladda upp fil(er)
Repetition av Del 1
I del 1 så nuddade jag vid Save och SaveVirtual. Jag pratade om att det handlade om säkerhet skäl att det man stängde av Save. Men den skillnad som vi programmerar ser/märker av är att när du använder Save så ska du skriva den fysiska sökvägen till den mapp som du ska ha filerna i. Använder du däremot SaveVirtual så skriver du utifrån den mappen som aspupload-filen ligger i, dvs alltså precis som vi i vanliga fall använder Server.MapPath.Jag skrev också om kommandot OverwriteFiles som hade true default(standard). Ofta vill man ju inte att kan ska råka klanta till det med att skriva över en fil på server. Så vi satte den på False, detta gör att filerna byternamn från filnamn.ext till filnamn1.ext. AspUpload sätter alltså dit en numrering på filen så att den ska vara lätt att hitta. Det var en liten repetition/förtydling av del 1. Redo för att ta tag i del II? Redo eller ej, nu kör vi…
Vilken fil-typ
Man vill ju inte att det ska få laddas upp vad som helst på servern. Du kan ju som jag visa i del 1, sätta en storleks-begränsning via SetMaxSize. Men det finns fler sätt att göra detta för ännu mer kontroll, bl a genom att bara låta t ex jpg och gif filer gå igenom till servern.
If Upload.Files(1).ImageType <> "GIF" and Upload.Files(1).ImageType <> "JPG" Then
Upload.Files(1).Delete 'filer som inte är GIF eller JPG tas bort
Response.Write "GIF eller JPG filer enbart! "
ElseIf Upload.Files(2).ImageType <> "GIF" and Upload.Files(2).ImageType <> "JPG" Then
Upload.Files(2).Delete 'filer som inte är GIF eller JPG tas bort
Response.Write "GIF eller JPG filer enbart! "
End If
Här ser vi ett par nya kommandon; först ut är ImageType=bildtyp, dvs ex jpg eller gif. Nästa ut är Delete. Delete är precis vad det låter. Det kommandot tar bort eventuell fil, så det inte ligger något och skräpar.
Vilken pixel storlek
Du du har en fixerad layout eller bara vill ha en speciell pixel storlek på bilderna som laddas upp. Kan man med enkla medel sätta en fast storlek på bilderna som laddas upp, så att det inte laddas upp allt förstora eller för små bilder på sidan. Det är alltid trevligt att vara säker på att sidan ser ut som du har gjort den. Eller hur!?! Med kommandona ImageHeight och ImageWidth kontrollera du enkelt detta.
If Upload.Files(1).ImageWidth < 300 UploadFiles(1).ImageHeight < 150 Then
Response.Write "Bilden får inte vara större än 300x150px! "
ElseIf Upload.Files(2).ImageWidth < 300 UploadFiles(2).ImageHeight < 150 Then
Response.Write "Bilden får inte vara större än 300x150px! "
End If
Här låter vi inte bildfilerna vara större än 300x150 pixlar. Tänk på att när man skriver storlek på något så skriver man alltid bredden först och sen höjden.
Spara filerna i olika mappar
Ofta på mina produktioner så har jag flera mappar i min bild mapp. Därför kan det vara bra att kunna spara filerna i 2 olika mappar så att funkar som det ska. Man kan göra det på 2 generella sätt. 1. Ladda upp filerna i minnet på aspupload och fördela dem. 2.Ladda upp filerna i en ”temp” mapp och flytta filerna sedan till rätt mappar. Jag kommer att gå igenom andra varianten pga att då får vi även använda ett annat kommando (MoveVirutal). Så vi lär oss principen för att flytta filer. Okej nu kör vi.
Count = Upload.SaveVirtual("../bilder/temp")
Upload.Files(1).MoveVirtual ("../bilder/första/" & Upload.Files(1).ExtractFileName & "")
Upload.Files(2).MoveVirtual ("../bilder/andra/" & Upload.Files(2).ExtractFileName & "")
Vi börjar som vanligt med Upload.SaveVirtual och spara bilderna i ”temp” mappen. Obs! Glöm ej att sätta skriv rättigheter på temp/första/andra mapparna! Sen kommer MoveVirtual-kommandot, det finns ett Move-kommando men det funkar som Save och SaveVirtual kommandona. ExtractFileName sätter dit rätt namn på filen. Skulle du vilja byta namn där automatiskt, så kan du byta ut Upload.Files(1).ExtractFileName mot t ex Session(”id”) & ”.” & Upload.Files(1).ImageType. Så för du filen döpt till session_id.ext . Smidigt va?!?
Andra finesser
När man har 2 eller fler file-fält i html-form:en så kan det vara bra att kolla så att det verkligen är 2 filer som laddas upp. Detta gör du enkelt genom att:
IF NOT Count = 2 then ‘2:an är alltså hur många filer som ska vara med
Response.Write "Måste vara 2 filer! "
Else
’resten av koden som ska utföras
Johan Moberg
När kommer nästa del???