4.6. Retrieving Values
of Ordinary Form Fields with Java Servlet / JSP
If
a file item contains a simple name-value pair of an ordinary form
field, we can retrieve its name and value using the getFieldName()
method and the getString()
method respectively:
String
name = fileItem.getFieldName(); String value =
fileItem.getString();
For
example, suppose there is a text field in an HTML/XHTML form:
<input
name="text_field" type="text" />
and
you enter "Welcome to our JSP / Servlet file upload tutorial"
in the text field. After the execution of the previous two lines of
Java code, the name variable
should contain the value "text_field" (the name
attribute value of the <input> tag) and the value
variable should contain the value "Welcome to our JSP / Servlet
file upload tutorial".
4.7. Getting Information
about the Uploaded File with Java Servlet / JSP
If
a file item contains an uploaded file, we can use a number of methods
to obtain some information about the uploaded file before we decide
what to do with it:
/*
Get the name attribute value
of the <input type="file"> element. */ String
fieldName = fileItem.getFieldName();
/* Get the size of the
uploaded file in bytes. */ long fileSize = fileItem.getSize();
/*
Get the name of the uploaded file at the client-side. Some browsers
such as IE 6 include the whole path here (e.g. e:\files\myFile.txt),
so you may need to extract the file name from the path. This
information is provided by the client browser, which means you should
be cautious since it may be a wrong value provided by a malicious
user. */ String fileName = fileItem.getName();
/* Get the
content type (MIME type) of the uploaded file. This information is
provided by the client browser, which means you should be cautious
since it may be a wrong value provided by a malicious user. */ String
contentType = fileItem.getContentType();
Nokia
cell phones such as Nokia 6230 determine the content type (MIME type)
of the file to be uploaded by its file extension. The following table
lists some of the file extensions that are recognized by Nokia 6230.
We have shown this table to you before and we just copy and paste it
here for your convenience.
File
extension
|
Content
type / MIME type
|
.jpg
|
image/jpeg
|
.gif
|
image/gif
|
.png
|
image/png
|
.wbmp
|
image/vnd.wap.wbmp
|
.txt
|
text/plain
|
If
the Nokia 6230 cell phone does not recognize a file extension, it
will specify "application/octet-stream" as the content type
/ MIME type of the file in the HTTP request.
4.8. Saving Uploaded
Files in the File System with Java Servlet / JSP
In
some situations, you just want to store the uploaded file in the file
system without concerning what the uploaded file contains. The
FileItem interface provides a
method called write()
that helps us perform this easily:
File
saveTo = new
File("/upload_files/myFile.txt"); fileItem.write(saveTo);
(In the above Java code snippet, File is a
class of the java.io package.)
If
everything works fine, the uploaded file will be saved to
"/upload_files/myFile.txt". Otherwise the write()
method will throw a java.lang.Exception
exception.
Note
that if the write() method is called more than once, an error
may occur. In the case where the uploaded file is stored as a
temporary file on the disk, the write() method will first try
to rename the temporary file and put it at the new location instead
of copying the file contents so as to obtain a performance gain. When
the write() method is called
the second time, the temporary file does not exist and so it will
produce an error. However, if the uploaded file is hold in the
memory, you can call the write()
method multiple times.
4.9. Processing Contents
of Uploaded Files with Java Servlet / JSP
If
you do not want to save the uploaded file directly but to process it,
the get() and
getInputStream()
methods can help you. The get()
method returns the uploaded file as an array of the byte
data type:
byte[]
fileData = fileItem.get();
However,
if the uploaded file is large in size, you will not want to load the
whole file into memory. The getInputStream()
method can help you in this case. It returns the uploaded file
as a stream:
InputStream
fileStream = fileItem.getInputStream();
(InputStream is a class of the java.io package.)
Feedback Form ( ExpandCollapse)
|