I am using apache-commons-fileupload
to get file from client
to the server
.(using JSP
and Servlet
).
JSP/HTML
<form method="POST" action="GetFile" enctype="multipart/form-data">
<input type="file" name="datafile">
<input type="text" name="text1">
<input type="submit" value="Next">
</form>
Servlet: GetFile
System.out.println(request.getParameter("text1"));
I am able to upload the file to the server, but I am not able to get the value of text1
in the servlet
(I am getting null
value of text1
in the servlet
), I need this textfield
in the form to submit some additional information while uploading it to the server
.
enctype="multipart/form-data"
option of form doesn't allow other
form data to be submited? if it doesn't allow it then what are the other options I have to send this additional textfield
to the server
.Is
enctype="multipart/form-data"
option of form doesn't allow other form data to be submited? if it doesn't allow it then what are the other options I have to send this additional textfield to the server.
No there is no issue with using enctype="multipart/form-data"
. You can get other fields then file in such form.
Or is there any other problem in my code?
Yes, as for now. While using enctype="multipart/form-data"
you can not directly get parameters by using request.getParameter(name);
. While using it, form fields aren't available as parameter of the request, they are included in the stream, so you can not get it the normal way. You can find a way to do this in the docs of using commons-fileupload#Processing the uploaded items.
Well the parameters are not lost , its just that they are part of request Stream.
You have to get all the items from the Request and iterate and handle it accordingly based on their item type
List items = upload.parseRequest(request);
Heres how you can get it
// Process the uploaded items
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (item.isFormField()) {
String name = item.getFieldName();//text1
String value = item.getString();
} else {
processUploadedFile(item);
}
}
MultipartRequest req = new MultipartRequest(request, UPLOAD_PATH, 1024 * 1024 * 1024);
out.print(req.getParameter("contractNo"));
out.println("<BR>");
Enumeration files = req.getFileNames();
while (files.hasMoreElements()) {
String name = (String) files.nextElement();
String filename = req.getFilesystemName(name);
String type = req.getContentType(name);
File uploadedFile = req.getFile("xlFile");
FileInputStream fis = new FileInputStream(uploadedFile);
BufferedReader in = new BufferedReader(new InputStreamReader(fis));
FileWriter fstream = new FileWriter(UPLOAD_PATH + name, true);
BufferedWriter out11 = new BufferedWriter(fstream);
String aLine = null;
while ((aLine = in.readLine()) != null) {
//Process each line and add output to Dest.txt file
out11.write(aLine);
out11.newLine();
}
// do not forget to close the buffer reader
in.close();
// close buffer writer
out11.close();
}
Above code will read file along with other form data just have a look at req.getParameter();
method ofMultipartRequest req
object
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With