30. december 2006 - 04:18Der er
7 kommentarer og 1 løsning
Aspupload filtype sortering
Jeg sidder her med aspupload og ønsker i den forbindelse at den selv kan finde filtypenavnet eks. .gif, .png, .txt, og så efterfølgende ændre den folder hvori filen skal hen.
Hvis filen f.eks. er en .gif skal den ligge i upload/image/, .txt i upload/documents/, osv.
Jeg forestiller mig at det egentligt er ligetil idet jeg egentlig bare skal "extracte" filnavnet fra min type="file" og så splitte ved punktum. Eks: C:\billede.jpg --> jpg
Men hvordan i alverden får jeg data fra <input type="file" id="inputfile" name="file"> ind så jeg kan ændre stien: Server.MapPath("../../upload") til noget andet?
Jeg forestiller mig at der nok er en funktion i aspupload der kan hente filtypen, men den fungerer sikkert først efter selve uploaden og det går jo ikke.
<% Set Upload = Server.CreateObject("Persits.Upload")
Upload.OverwriteFiles = False On Error Resume Next
Upload.SetMaxSize 1048576 ' Limit files to 1MB Count = Upload.Save(Server.MapPath("../../upload"))
If Err <> 0 Then
Response.Redirect("../fil.asp?info=Filen er ikke uploadet") Else Response.Redirect("../fil.asp?info=Filen er uploadet") End If
hvorfor mener du ikke det først fungerer efter upload?
If Upload.ImageType = "jpg" Then File.SaveAs Server.MapPath("../../upload" & Upload.FileName) Else File.SaveAs Server.MapPath("../../andenmappe" & Upload.FileName) End If
Det virker ikke. Jeg bruger Count = Upload.Save(Server.MapPath("../../upload")) til at uploade og selv hvis jeg erstatter File.SaveAs Server.MapPath("../../andenmappe" & Upload.FileName) med denne kommando får jeg stadig fejl.
If Upload.ImageType = "jpg" Then File.SaveAs Server.MapPath("../../upload/image/" & Upload.FileName) Else File.SaveAs Server.MapPath("../../upload/" & Upload.FileName) End If
Virker ikke
eller
If Upload.ImageType = "jpg" Then Count = Upload.Save(Server.MapPath("../../upload/")) Else Count = Upload.Save(Server.MapPath("../../upload/file/")) End If
Med denne metode bliver alt uploadet i ../../upload/,så jeg tror der er noget halt med Upload.ImageType.
i stedet for File.SaveAs skal det i dit tilfælde hedder Upload.SaveAs fordi det er hvad dit objekt er instansieret som. Hvis ikke så må du komme med nogle fejlmeddelelser da det elelrs er umuligt at komme videre med.
hvis der er "noget" i vejen med ImageType må du prøve at finde ud af hvorfor - i stedet for fx bare at lave if-sætningen så udskriv variablen og lad os se hvad du får af værdier.
Hvis jeg f.eks. bruger dette her: Set Upload = Server.CreateObject("Persits.Upload")
Upload.OverwriteFiles = False On Error Resume Next
Upload.SetMaxSize 1048576 ' Limit files to 1MB
Response.Write Upload.ImageType & "<br>"
Response.Write Err
Så bliver resultatet 438, som nok må være en fejlkode. Kan det tænkes at mit webhotel har fjernet visse funktioner? Hvis ja: jeg kan se at aspsmartupload også er installeret, så måske jeg skulle forsøge at benytte dette. Men hvad er så kommandoen for filtype i denne?
For Each File in Upload.Files strFileName = File.FileName strExt = Right(strFileName, Len(strFileName) - Instrrev(strFileName, ".")) Select Case strExt Case "jpg", "gif", "png" File.SaveAs Server.MapPath("../../upload/image/" & strFileName & "") Case "txt", "doc", "pdf" File.SaveAs Server.MapPath("../../upload/file/" & strFileName & "") Case else Response.Write "invalid file" End Select Next
Man skal åbenbart først lægge filen i memory og så efterfølgende bestemme hvor den skal gemmes. Ovennævnte eksempel fungerer som det skal i mit tilfælde.
Ja, fandt en løsning som jeg har skrevet ovenover. Mange tak for hjælpen.
Synes godt om
Ny brugerNybegynder
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.