---
title: "uploadrequest, fungerar inte som det skall?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/145091-uploadrequest-fungerar-inte-som-det-skall"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "fakenick!"
published: "2006-04-05T06:43:57.000Z"
updated: "2006-04-06T11:28:55.000Z"
replies: 8
views: 664
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/145091-uploadrequest-fungerar-inte-som-det-skall"
---

# uploadrequest, fungerar inte som det skall?

## #1 — fakenick!, 2006-04-05T06:43Z

vill få detta att fungera: 

från (sida1.asp): 

\<form method="post" action="sida2.asp" enctype="multipart/form-data"\>
\<input type="hidden" value="tjena" name="hihi\>

till (genom submit, sida2.asp):

Set UploadRequest = CreateObject("Scripting.Dictionary")
\*hihi = UploadRequest.Item("hihi").Item("Value")

\* där får jag detta fel: 

Microsoft VBScript runtime error '800a01a8' 
Object required: 'UploadRequest.Item(...)' 

har sökt mycket efter detta.. och den enda förklaringen till detta 
fel är att det inte finns något värde i uploadrequest:en.. men jag 
vet att ett värde finns.... 

jag använder nämligen samma formulär till ett bilduppladdningsscript.. 
man skulle ju kunna slänga in all bildscriptskod för att slutligen få den 
att fungera, men verkar inte så smart enligt mig.... :)

tacksam för svar! :)

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

## #2 — @nders, 2006-04-05T06:52Z

Hmm...

Om du använder multipart/form-data som enctype får du nog använda dig av uppladdningsscriptets metoder för att få ut formulärsdatan. Det ser ut som att det är något sådant du försöker dig på, men Scripting.Dictionary fungerar inte rakt av såsom du vill. Hur ser det ut när du använder dig av uppladdningsscriptet?

... eller så ser du till att inte sätta enctype i \<form\> om du ändå inte ska ladda upp någon fil?

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

## #3 — fakenick!, 2006-04-05T14:18Z

såhär har jag gjort...

jag har två inputs, en av typen "checkbox" och en av typen "file".. 
när man klickar i checkboxen enabla:s typen "file" och man kan då 
välja fil etc... 
i och med klicket switchar man action på \<form\>.. 

alltså: 

ikryssad = bild+info.asp
icke kryssad = info.asp

och det är på icke kryssad mitt problem ligger, 
att jag inte kan plocka ut värdena ur inputs:en... 

jag har även testat med att lägga till switch mellan 
enctype i mitt nuvarande javascript:

function laddauppellerej()
{if(document.form.checkbox.checked)
{document.form.pic.disabled=false;document.form.action='bild+info.asp';document.form.enctype='multipart/form-data';}
else {document.form.pic.disabled=true;document.form.action='info.asp';document.form.enctype='';}}

men tror inte att javascriptet skriver ut enctypen rätt, 
eftersom filen för uppladdning reagerar med att få fel så 
pass snabbt.. 

så här ser iallafall uppladdningskoden ut: 

```
Sub BuildUploadRequest(RequestBin)
'Get the boundary
PosBeg = 1
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
boundaryPos = InstrB(1,RequestBin,boundary)
'Get all data inside the boundaries
Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
'Members variable of objects are put in a dictionary object
Dim UploadControl
Set UploadControl = CreateObject("Scripting.Dictionary")
'Get an object name
Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
Pos = InstrB(Pos,RequestBin,getByteString("name="))
PosBeg = Pos+6
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
PosBound = InstrB(PosEnd,RequestBin,boundary)
'Test if object is of file type
If PosFile<>0 AND (PosFile<PosBound) Then
'Get Filename, content-type and content of file
PosBeg = PosFile + 10
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
'Add filename to dictionary object
UploadControl.Add "FileName", FileName
Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
PosBeg = Pos+14
PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
'Add content-type to dictionary object
ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
UploadControl.Add "ContentType",ContentType
'Get content of object
PosBeg = PosEnd+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
Else
'Get content of object
Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
PosBeg = Pos+4
PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
End If
'Add content to dictionary object
UploadControl.Add "Value" , Value 
'Add dictionary object to main dictionary
UploadRequest.Add name, UploadControl 
'Loop to next object
BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
Loop

End Sub

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
char = Mid(StringStr,i,1)
getByteString = getByteString & chrB(AscB(char))
Next
End Function

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
getString = getString & chr(AscB(MidB(StringBin,intCount,1))) 
Next
End Function

Response.Expires=0
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest RequestBin
username = UploadRequest.Item("username").Item("Value")
[B]asdf = UploadRequest.Item("asdf").Item("Value")[/B]
contentType = UploadRequest.Item("pic").Item("ContentType")
filepathname = UploadRequest.Item("pic").Item("FileName")
filename = lcase(tralala & "_" & tralalal & "_" & Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\")))
value = UploadRequest.Item("pic").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
Set MyFile = ScriptObject.CreateTextFile(Server.mappath("/pics/" & filename))
For i = 1 to LenB(value)
MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close
```

det är alltså inget fel på koden, utan vill ha 
funktionerna där man plockar ut värdena i inputs!

mvh john norrby..

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

## #4 — @nders, 2006-04-05T16:51Z

Varför byter du action på formuläret?
Menar du alltså att exakt den kod du visar fungerar bra när du laddar upp en fil?
Har du inte tillgång till någon "riktig" uploadkomponent exempelvis ASPUpload eller ASPSmartUpload?

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

## #5 — fakenick!, 2006-04-05T22:37Z

så här hade jag förut: 

när jag skulle byta informationen för en bild så var jag tvungen att välja 
samma bild igen ifall jag ville ha kvar bilden, annars skulle den försvinna.. 

nu vill jag fixa det så här (och fixade det nyss):

jag har två val: 

att lägga till både bild + information..

eller 

redigera endast information

jag bytte action eftersom jag ibland vill ladda upp bild + information... 
....men ibland BARA informationen.. 

.....

jag fixade det på så sätt att jag lade till en "inputupptagare" på 
input type="file" name="picture" i bilduppladdningsscriptet.. 

körde en if-sats där man lade till uppgifterna i databasen..

if picture = "" then 
else
rs("picture") = pic
end if

och sen lade jag till "on error resume next" längst upp i samma fil...

tack så mycket för dina svar som ändå ledde mig på rätt väg.. :)

men vad är fördelen med aspupload eller aspsmartupload om man jämför 
med detta komponentlösa script? jag tycker detta fungerar nästintill klockrent. :)

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

## #6 — @nders, 2006-04-06T03:09Z

Fördelen med att använda t.ex. ASPSmartUpload är bl.a:
\*) att koden blir kort och översiktlig. Jag, till exempel, fattar noll av den kladdiga koden du postat.
\*) Det finns färdiga metoder för att bestämma tillåtna filtyper, maxstorlek etc.

> och sen lade jag till "on error resume next" längst upp i samma fil...

Låter livsfarligt...

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

## #7 — fakenick!, 2006-04-06T11:19Z

:D 

mjo.. :) 
men den fungerar som jag vill nu iallafall... :P

jag tror inte att webbservern jag använder 
har den komponenten.. det är ju webbservern 
som måste ha den? eller? :)

jag har iallafall lagt till if satser med filtyper och 
storlek, så det fungerar rätt bra det också.. :)

passar på att tacka dig för alla andra miljarder 
problem du löst för mig... :) you are a hero adde! ;)

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

## #8 — fakenick!, 2006-04-06T11:20Z

smajleyberoende? NEEEJDÅ

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

## #9 — @nders, 2006-04-06T11:28Z

> **fakenick! skrev:**
>
> jag tror inte att webbservern jag använder 
> har den komponenten.. det är ju webbservern 
> som måste ha den? eller? :)

Jao!

> jag har iallafall lagt till if satser med filtyper och 
> storlek, så det fungerar rätt bra det också.. :)

Topp! :)

> passar på att tacka dig för alla andra miljarder 
> problem du löst för mig... :) you are a hero adde! ;)

Hmm, ja Adde kanske är ett smeknamn för mig. :D 

Vassego! :bire

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/145091-uploadrequest-fungerar-inte-som-det-skall
