I'm using Apache Commons FileUpload to upload data to my server - some text-fields and one file-item. Sometimes there is only text-fields without files and i need to proceed this requests too. When i try to do it, org.apache.commons.fileupload.FileUploadException: Stream ended unexpectedly
occurs on the line List fileItems = upload.parseRequest(request)
.
There is my code:
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
public class UploadServlet extends HttpServlet {
private boolean isMultipart;
private int maxFileSize = 50*1024*1024;
private int maxMemSize = 40*1024;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
...
try {
...
isMultipart = ServletFileUpload.isMultipartContent(request);
if(!isMultipart){
return;
}
DiskFileItemFactory factory = new DiskFileItemFactory(maxMemSize,
new File(properties.getProperty("temp")));
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(maxFileSize);
UploadRequest uploadRequest = new UploadRequest();
try {
List fileItems;
// NEXT LINE EXCEPTION
fileItems = upload.parseRequest(request);
Iterator i = fileItems.iterator();
while(i.hasNext()){
FileItem item = (FileItem)i.next();
if(!item.isFormField()){
String fileName = item.getName();
}
else {
...
}
}
...
If i send to it files and textfields - i can read all fields. If i don't send files - i can't also read textfields because of exception. Any solutions to load only text without files with multipart/form-data
?