---
title: "Hitta variabelnamn i denna kod ?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/58777-hitta-variabelnamn-i-denna-kod"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Pellefant"
published: "2002-11-12T05:09:11.000Z"
updated: "2002-11-13T07:39:35.000Z"
replies: 14
views: 410
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/58777-hitta-variabelnamn-i-denna-kod"
---

# Hitta variabelnamn i denna kod ?

## #1 — Pellefant, 2002-11-12T05:09Z

Hej!

Tanken är att få in filens namn i "filenamne" på rad 31 nedan(merkerad med \*\*\*\*\*),  Så att det skickas med i länken ett par rader under.men det går inte så bra, har testat allt jag kan komma på själv nu.

Detta script är från <https://www.aspsidan.nu>

Tack på förhand.

```
<% Option Explicit %>
<% Response.Expires	= 0 %>

<!-- Detta ASP-script är skrivet av Joakim på JoakimWeb.com -->
<!--#include file="koppling.asp" -->

<%Response.Buffer = True %>

<%
' Uppladdningskoden
If Request("do") = "laddaupp" Then

' Startar en funktion som finns längre ner i koden
Dim fil
Set fil = get_upload_files()

' Koden som laddar upp filen med hjälp av funktionen
Dim plac, filen, innehall
innehall = fil("upload").Item("content")

Set filen = filer.CreateTextFile(mapp2 & "\" & extract_filename(fil("upload").Item("filename")))
For plac = 1 to LenB(innehall)
filen.Write chr(AscB(MidB(innehall, plac, 1)))
Next

END IF

set filename = fil.Item("filename")       <- rad 31  *****
Set filen = Nothing

filen.Close 

%>

<A HREF="default.asp?fname=<%=filename%>">Continue</A>

<%
' funktionen som används för uppladdning av filer
Function get_upload_files()

Dim	upload_object, request_binaries
Dim position_start, position_end
Dim boundary, boundary_pos

Set upload_object	= Server.CreateObject("Scripting.Dictionary")
request_binaries	= Request.BinaryRead(Request.TotalBytes)
position_start		= 1
position_end		= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
boundary			= MidB(request_binaries, position_start, (position_end - position_start))
boundary_pos		= InstrB(1, request_binaries, boundary)

Do Until (boundary_pos = InstrB(request_binaries, boundary & get_byte_string("--")))

' Om du stäng ner webbläsaren, då avslutas uppladdningen
If Not(Response.IsClientConnected) Then Response.End

Dim name, pos_file

position_start	= (InstrB(InstrB(boundary_pos, request_binaries, get_byte_string("Content-Disposition")), request_binaries, get_byte_string("name=")) + 6)
position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(34)))

name			= get_string(MidB(request_binaries, position_start, (position_end - position_start)))
pos_file		= InstrB(boundary_pos, request_binaries, get_byte_string("filename="))

If  ((pos_file <> 0) AND (pos_file < InstrB(position_end, request_binaries, boundary))) Then
upload_object.Add name, Server.CreateObject("Scripting.Dictionary")

position_start	= (pos_file + 10)
position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(34)))
upload_object.item(name).Add "filename", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

position_start	= (InstrB(position_end, request_binaries, get_byte_string("Content-Type:")) + 14)
position_end	= InstrB(position_start, request_binaries, get_byte_string(chr(13)))
upload_object.item(name).Add "content-type", get_string(MidB(request_binaries, position_start, (position_end - position_start)))

position_start	= (position_end + 4)
position_end	= InstrB(position_start, request_binaries, boundary) - 2
upload_object.item(name).Add "size", ((position_end - position_start))
upload_object.item(name).Add "content", MidB(request_binaries, position_start, (position_end - position_start))
End If
boundary_pos	= InstrB(boundary_pos + LenB(boundary), request_binaries, boundary)
Loop

Set get_upload_files = upload_object
End Function

Function get_byte_string(str)
Dim cnt
For cnt = 1 to Len(str)
get_byte_string	= get_byte_string & chrB(AscB(Mid(str, cnt, 1)))
Next
End Function

Function get_string(str)
Dim cnt
For cnt = 1 to LenB(str)
get_string	= get_string & chr(AscB(MidB(str, cnt, 1))) 
Next
End Function

Function extract_filename(filename)
extract_filename	= Right(filename, Len(filename) - InStrRev(filename, "\", -1, 1))
End Function
%>
```

Permalänk: https://www.webforum.nu/p/58777

## #2 — PatrikB, 2002-11-12T07:32Z

Ditt **fil** object skapas ju endast om if-satsen ovanför inträffar.
\<redigerat\>

```
extract_filename(fil("upload").Item("filename"))
```

är det som plockar ut filnamnet i if-satsen. spara det till en variabel så kan du återanvända filnamnet vart du vill OM if-satsen uppfylls.
\</redigerat\>

cya,
PatrikB

Permalänk: https://www.webforum.nu/p/852642

## #3 — Pellefant, 2002-11-12T07:58Z

Tack Patrik, det hade jag aldrig kommit på själv. Fungerar jättebra. :)

Jag har  testat ca 20 olika saker själv innan och typ 2 timmar tog det, alla med något irriterande felmeddelande.

Permalänk: https://www.webforum.nu/p/852650

## #4 — Pellefant, 2002-11-12T08:39Z

Någon som även förstår sig på var man kan peta in denna kod: Upload.OverwriteFiles = False 

(Det innebär att finns redan en fil med samma namn, så lägger den till en siffra på titeln, tex filnamn(1)   )

Källa: <http://www.aspupload.com/manual_simple.html>
(I mitten på sidan ungefär)

Permalänk: https://www.webforum.nu/p/852680

## #5 — solbulle, 2002-11-12T11:19Z

Hm, men du använder dig väl inte av den komponenten du hänvisar till? Eller? (aspupload)

Permalänk: https://www.webforum.nu/p/852795

## #6 — Pellefant, 2002-11-12T12:57Z

Aha, det förklarar i så fall varför det inte fungerar. Servern stödjer något som kallas "ASP Smart Upload", jag ser nu i länken att den handlar om "ASP Upload", så det kan nog skilja sig åt. Tack för iaktagelsen.

Törs man fråga om någon istället förstår hur man lägger till "now" till filnamnet? (för att på så sätt skilja dem åt)

jag har försökt med: 

upload = upload & now(), samt now,   längst upp, men det gick inte.

Permalänk: https://www.webforum.nu/p/852913

## #7 — solbulle, 2002-11-12T13:27Z

Kan inte heller se att du använder något vid namn upload i din kod...
Antar att det är denna rad som bestämmer filnamnet.

```
set filename = fil.Item("filename")
```

Då kanske du kan köra:

```
set filename = fil.Item("filename") & now()
```

Annars kan du som sagt använda en funktion o kolla om filen redan finns, typ något likt denna:

```
Function Filnamn(file)

		Set fso=Server.CreateObject("Scripting.FileSystemObject")
		Filnamn= file
		filenumber = 1

			Do While fso.FileExists(Server.mapPath(file))
				file = filenumber & Filnamn
				filenumber = filenumber + 1
			Loop
		
		Filnamn= file
		Set fso=Nothing
End Function
```

Permalänk: https://www.webforum.nu/p/852962

## #8 — solbulle, 2002-11-12T13:29Z

Borde kunna anropas med:

```
set filename = Filnamn(fil.Item("filename"))
```

Permalänk: https://www.webforum.nu/p/852967

## #9 — Pellefant, 2002-11-13T05:54Z

Tack, för alla hjälp.

Känner att jag rört ihop begreppen, ASPULOAD, ASPSMARTUPLOAD, etc, samt vilka funktioner som hör till vad, ska läsa på lite i ämnet innan jag fortsätter med filuppladdningar.

Permalänk: https://www.webforum.nu/p/853633

## #10 — @nders, 2002-11-13T06:00Z

Nu har jag inte läst hela tråden, och detta kanske kommer helt ur sammanhang, men jag chansar. ;)

\- - -

Det känns galet att använda SET för att tilldela en variabel ett strängvärde (för det är väl det *filename* är?)

SET skall användas för objekt.

\- - -

Vad gäller ASPUpload / ASPSmartUpload / Uploadscriptet i ditt första inlägg, det är bara olika sätt att nå samma mål. Något som funkar i det ena funkar antagligen inte i det andra, men det brukar finnas alternativ. 

ASPSmartUpload är en riktigt hygglig komponent, och lätt att använda. Läs in dig på hur den fungerar på <https://www.aspsmart.com> , och du kommer märka att den är betydligt lättare att använda än det stora och omständiga script som du visar här.

Mvh,

Permalänk: https://www.webforum.nu/p/853634

## #11 — Pellefant, 2002-11-13T06:39Z

Ja, det stämmer.

Detta är på den första sidan:

```
<form name="frmUpload" method="post" enctype="multipart/form-data" action="laddaupp.asp?do=laddaupp">
<input type='file' name='upload' >&nbsp;<input type='submit' value='Upload the file' >
</form>
```

Permalänk: https://www.webforum.nu/p/853636

## #12 — @nders, 2002-11-13T06:57Z

Jag är osäker på om du kan hämta filnamnet direkt från formuläret. ASPSmartUpload har properties och metoder för det mesta, så ta och hämta det därifrån istället. 

Mvh,

Permalänk: https://www.webforum.nu/p/853638

## #13 — Pellefant, 2002-11-13T07:21Z

Tjena Anders! :)

Scriptet fungerar alltså. :)

Det enda jag vill ändra är så att det läggs til "now()" på filnamet så att det inte blir överskrivningar med nya filer över gamla.

Ska försöka lösa det genom att redan på första sida(formen) lägga till now(), det måste ju vara det enklaste ändå, så slipper man rota i ASP koden. Återkomer med lösningen sedan. :)

Permalänk: https://www.webforum.nu/p/853644

## #14 — @nders, 2002-11-13T07:28Z

Jag tror säkert att scriptet fungerar, men jag tror ändå att det är betydligt smidigare att använda ASPSmartUpload.

Jag har själv en uppladdningsfunktion som gör precis det du är ute efter, och det är generellt trevligt att arbeta med ASPSmartUpload.

Permalänk: https://www.webforum.nu/p/853647

## #15 — Pellefant, 2002-11-13T07:39Z

Aha, jag som trodde att jag höll på med ASPSMARTUPLOAD pga att mitt script fungerade. \*s\* Men så kom jag på det script som finns här på siten, där man kan ladda upp filer utan att servern stödjer detta.

Jag håller på att läsa på om just ASPSMARTUPLOAd i deras faq nu, känner jag jag är helt bortdribblad i detta, så jag återkommer när jag läst på och testat lite mer kod. Förhoppningsvis skriver jag att jag fått ordning på det. :)

Permalänk: https://www.webforum.nu/p/853654

---

Tråden på webben: https://www.webforum.nu/amne/asp/58777-hitta-variabelnamn-i-denna-kod
