Artiklar » ASP » Ladda upp filer med ASPupload

 
 

Ladda upp filer med ASPupload

Författare: Michael
Datum: den 17 april 2002
Antal lästa: 11369
Ej stjärnmärkt

ASPUpload är en komponent med vilken man kan låta besökarna ladda upp filer till servern. Alla webhotell stödjer inte denna komponenten så kolla med ditt webhotell om de gör det. Klientsidan kräver minst Netscape 3 eller IE 4 för att fungera.

Första exemplet
Okej, då börjar vi. Först gör vi en HTML-fil med ett formulär. Det viktiga här är att vi har en <input type="file"> och att enc-typen på formen är multipart/form-data. Detta är för att browsern ska skicka hela filen och inte bara filnamnet, som den skulle gjort utan multipart/form-data.

"form.asp"
Kod:

<html>
<head>
<title></title>
</head>
<body>

<form method="post" enctype="multipart/form-data" action="upload.asp">
<input type="file" name="file"><br>
<input type="submit" value="Skicka filen">
</form>

</body>
</html>


"upload.asp"

Kod:

<html>
<head>
<title></title>
</head>
<body>

<%

' Skapar ASPupload objektet.
  Set Upload = Server.CreateObject("Persits.Upload.1")

' Sparar filer var du har angivit dem, kontrollera på servern om du har rättigheter till mappen.
  Upload.Save("c:upload")

  response.write "Filen uppladdad!"

%>

</body>
</html>



Skicka flera filer
För att skicka flera filer på en gång lägger du till så många <input type="file"> som du vill ha.

"form.asp"
Kod:

<html>
<body>

<form method="post" enctype="multipart/form-data" action="upload.asp">
<input type="file" name="file1"><br>
<input type="file" name="file2"><br>
<input type="file" name="file3"><br>
<input type="submit" value="Skicka filen">
</form>

</body>
</html>


Och i upload.asp kan vi göra en finess som visar hur många filer som skickats.

"upload.asp"
Kod:

<html>
<head>
<title></title>
</head>
<body>

<%

  Set Upload = Server.CreateObject("Persits.Upload.1")
  dim count
  count = Upload.Save("c:upload")

  response.write count & " filer uppladdade"

%>

</body>
</html>


ASPUpload ser själv vilka <input type="file"> som är ifyllda och struntar helt enkelt i dem som inte står något i.

Skicka med mer data
När man använder ASPUpload kan man inte hämta data med Request.Form eftersom vi använder en speciell attribut på formen. Men komponenten har då en smidig funktion inbyggd. Upload.Form fungerar nästan precis som Request.Form.

"form.asp"
Kod:

<html>
<head>
<title></title>
</head>
<body>

<form method="post" enctype="multipart/form-data" action="upload.asp">
Ladda upp filer och skriv en kort förklaring:<br>
<input type="file" name="file1"><br>
<input type="text" name="info1"><br>
<input type="file" name="file2"><br>
<input type="text" name="info2"><br>
<input type="file" name="file3"><br>
<input type="text" name="info3"><br>
<input type="submit" value="Skicka filen">
</form>

</body>
</html>


"upload.asp"
Kod:

<html>
<body>

<%

  Set Upload = Server.CreateObject("Persits.Upload.1")
  Upload.Save("c:upload")

  Repsonse.Write "Filer:<br>"

  For Each File In Upload.Files
  Response.Write File.Name & " " & File.Path & " (" & File.Size & ")<br>"
  Next

  Repsonse.Write "<br><br>Annan data:<br>"

  For Each Item In Upload.Form
  Response.Write Item.Name & " = " & Item.Value & "<br>"
  Next

%>

</body>
</html>


Nu blev det mycket nytt på en gång. I den första for-loopen så loopar vi igenom alla filer vi laddat upp och skriver ut namnet på filen, filens sökväg och storleken. I andra loopen skriver vi ut övrig data som skickats med.

Du behöver inte använda en for-loop för att skriva ut detta utan kan skriva såhär:
response.write Upload.Form("namn_på_textrutan")

Man behöver ju då inte heller använda en for-loop om man bara har laddat upp en fil. För att komma åt filens olika metoder skriver man då:
response.write Upload.Files("namnet_på_formulärets_filfält").Path

Eller...
Response.write Upload.Files(1).Path

Kom bara ihåg när du börjar exprimentera med detta att innan du kan anropa Upload.Files eller Upload.Form måste du köra Upload.Save.

Sätta en maxstorlek på filerna
Det är klokt att sätta en maxstorlek om man har en publik uppladding. Detta gör du med kommandot Upload.SetMaxSize 50000, True
Detta kör du innan Upload.Save men efter att du instansierat objektet. Storleken skriver du i byte, i detta fallet är maxstorleken 50000 byte. True står för att man får ett felmeddelande om filen är för stor, om man skriver false så kommer filen att laddas upp även om den är för stor men kapas vid den byten som är maxstorleken.

Skriva över/unika filnamn
Man kan välja om filer med samma namn ska skriva över varandra eller om det ska skapas nya med unika namn.
Upload.OverwriteFiles = False

Skriver man så kommer det att varje gång en fil med samma namn laddas upp att skapas en ny med tillägget (1). Till exempel om du laddar upp minfil.txt och nästa fil kommer att heta minfil(1).txt, minfil(2).txt osv.

Flytta, kopiera och ta bort filer
Detta gör du med följande kommandon:

Upload.Files(1).Move "c:uploadfil.txt"
Ange den nya platsen inom citationstecken.

Upload.Files(1).Copy "c:uploadfil.txt", True
Ange kopians plats inom ciationstecken och avsluta med om filen ska översätta eventuella existerande filer. Sätter du false och filen redan finns så kommer ett fel uppstå.

File.Delete
Inga parametrar behövs.

/ Michael Granlund
 
     

  » Logga in  
 
Användarnamn

Lösenord

 
     

  » Bli medlem  
  Bli medlem på ASPsidan!  
     

     
  Microsoft  
     

  » Partners  
  Comsolvia  
     
  » ANNONS  
  ingen annons än  
     

  » Senast online  
  Endast för inloggade  
  Antal inloggade: 1  
     

Copyright © 2007 www.ASPsidan.se
ingen sponsrar längre ASPsidan med Dedikerad Server
ASPsidan RSS
   
 XHTML / CSS
Det tog 0,2813 sekunder att ladda sidan