|
The Item property contains a collection of matching fields from
the current upload. The precise behavior of the Item property is
complicated but all that is normally required is that you copy what
you would normally do using a standard Request.Form object.
The Item property allows you to access both form input fields
and file upload fields. However for ease of use you will normally
use the Files collection for accessing file
upload fields.
You must not refer to the Request.Form object on any page which
uses an XForm object. If you do so an error will result as both try
to obtain exclusive access to shared resources.
Getting the Text of a Field
If you want to get the content of a particular field you might
use code like this.
Set theForm = Server.CreateObject("ABCUpload4.XForm")
Response.Write theForm("flavor")
Given the following form.
<form method="post" action="myup.asp"
enctype="multipart/form-data">
<input type="text" name="flavor"
value="chocolate"><br>
<input type="submit" name="submit" value="submit">
</form>
This might produce the following output.
chocolate
Getting an XField object for a Field
The normal behavior of the XForm object is identical to that of
the standard Form.Request object. This means that text is the
normal return value. For file upload fields you will want to
reference an XField object. To do this use code like this.
Set theForm = Server.CreateObject("ABCUpload4.XForm")
Set theField = theForm("myupload")(1) ' see note below
Response.Write "File Name = " & theField.FileName &
"<br>"
Response.Write "File Type = " & theField.FileType &
"<br>"
Given the following form.
<form method="post" action="myup.asp"
enctype="multipart/form-data">
<input type="file" name="myupload"><br>
<input type="submit" name="submit" value="submit">
</form>
This might produce the following output.
File Name = mypic.jpg
File Type = jpg
Note that when you request the object you must specify both the
name of the field ("myupload") and also the index of the field (1).
The index will always be one unless there are two or more
identically named fields. If you do not specify an index or do not
use the keyword Set the content of the file will be returned as a
text string - probably not what you want.
Getting the Text of Fields with the Same Name
If you have multiple fields with the same name (something that
is common if you are using checkboxes) you may want to iterate
through all the boxes which were checked. You might want to use
code like this.
For i = 1 To Request.Form("color").Count
Response.Write Request.Form("color")(i) &
"<br>"
Next
Given the following form.
<form method="post" action="myup.asp"
enctype="multipart/form-data">
<input type="checkbox" name="color" value="red"
checked>Red<br>
<input type="checkbox" name="color" value="purple"
checked>Purple<br>
<input type="checkbox" name="color" value="green"
checked>Green<br>
<input type="checkbox" name="color" value="blue"
checked>Blue<br>
<input type="submit" name="submit" value="submit">
</form>
This might produce the following output.
red
purple
green
blue
Getting the Text of all Fields
If you want to return the contents of every field in a form you
might use the following code.
Set theForm = Server.CreateObject("ABCUpload4.XForm")
For Each theItem In theForm
Response.Write "<br>" & theItem &
"<br>"
For Each theSubitem In theForm(theItem)
Response.Write " - " & theSubitem
Next
Next
Given the following form.
<form method="post" action="myup.asp"
enctype="multipart/form-data">
<input type="text" name="flavor"
value="chocolate"><br>
<input type="checkbox" name="color" value="red"
checked>Red<br>
<input type="checkbox" name="color" value="purple"
checked>Purple<br>
<input type="checkbox" name="color" value="green"
checked>Green<br>
<input type="checkbox" name="color" value="blue"
checked>Blue<br>
<input type="submit" name="submit" value="submit">
</form>
This might produce the following output.
flavor
- chocolate
color
- red - purple - green - blue
submit
- submit
Full Description
The precise behavior of the Item property is complicated but for
completeness is documented here. To understand it fully you must
bear in mind that each form may be associated with many field names
and each field name may be associated with many fields (though
normally forms contain a unique name for each field).
If you do not pass an index the Item property returns a
collection of all the field names available. This is a collection
of Strings. If you pass in a String the Item property returns a
collection of all fields with that name. This is a collection of
XField objects. If you pass in a Number the Item property returns a
collection of all fields with that index. Again this is a
collection of XField objects.
The collection of XField objects also implements an Item
property with an optional index parameter. A form may contain many
fields with the same name so this index allows you to choose the
one you are interested in. If you do not specify an index the
property returns a comma delimited string of the contents of all
the matching fields.
|