Hey all,
I am using the Apache's Common FileUpload, Spring 2.5 and Uploadify Javascript plugin to upload multiple files at once. The following code used to work fine previously. However, its not working since yesterday!
The issue is, The FileItemIterator's hasNext() method is always returning false. i,e. (while (iter.hasNext()) is always returning false).
Can someone please point me in the right direction so that I can weed this bug out.
Many thanks,
Joe.
Code:public class FileUploadProcessController implements Controller { protected final Log logger = LogFactory.getLog(getClass()); public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FileUploadException { logger.info("Inside FileUploadProcessController"); boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (! isMultipart) return null; //debug logger.info("Is a multipart request!"); // Create a new file upload handler ServletFileUpload upload = new ServletFileUpload(); // Parse the request FileItemIterator iter; try { //debug logger.info("Getting Iterator..."); iter = upload.getItemIterator(request); while (iter.hasNext()) { FileItemStream item = iter.next(); String name = item.getFieldName(); InputStream inputStream = item.openStream(); if (item.isFormField()) { String fieldValue = Streams.asString(inputStream); //debug logger.info("Form field " + name + " with value " + fieldValue + " detected."); inputStream.close(); } else { //debug logger.info("File field " + name + " with file name " + item.getName() + " detected."); // Process the input stream File originalFile = FileUtil.getUniqueFile("c:/", StringUtil.getFileName(item.getName())); try { uploadToFile(inputStream, originalFile); } catch (FileNotFoundException ex) { logger.error(ex); throw ex; } catch (IOException ex) { logger.error(ex); throw ex; } inputStream.close(); logger.info("File uploaded successfully!"); } } } catch (Exception ex) { logger.error(ex); throw new RuntimeException(ex); } return new ModelAndView("success"); } // Private methods private void uploadToFile(InputStream inputStream, File file) throws FileNotFoundException, IOException { FileOutputStream outputStream = new FileOutputStream(file); byte[] bytes = new byte[1024]; int bytesRead = -1; do { bytesRead = inputStream.read(bytes); if (bytesRead != -1) outputStream.write(bytes, 0, bytesRead); } while (bytesRead != -1); outputStream.flush(); outputStream.close(); } }Code:<html> <head> <title>Upload files</title> <script src="/uploadify/swfobject.js" />" type="text/javascript"></script> <script src="/uploadify/jquery.uploadify.v2.1.0.min.js" />" type="text/javascript"></script> <link rel="stylesheet" type="text/css" media="screen" href="/uploadify/uploadify.css" > <script type="text/javascript"> $().ready(function(){ $('#file').uploadify({ 'uploader': '/uploadify/uploadify.swf', 'script': '/filepload/', 'scriptData': {'userId': ${model.userId}}, 'folder': '/BLAH', 'cancelImg': '/uploadify/cancel.png', 'multi': true, 'fileExt': '*.jpg;*.jpeg;*.gif;*.png', 'fileDesc': '*.jpg;*.jpeg;*.gif;*.png (Image files only!)', 'sizeLimit': ${model.fileSizeLimit}, onAllComplete: function(event, data) {window.location="/recentuploads/";} }); }); </script> </head> <body> <div class="content"> <div class="form-div"> <form method="post" action="/fileupload/" enctype="multipart/form-data" > <fieldset> <legend>Upload Files</legend> <input id="file" name="file" type="file" size="50" /> <br /> <a href="javascript:$('#file').uploadifyUpload();">Upload Files</a> </fieldset> </form> </div> </div> </body> </html>


Reply With Quote
