You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@commons.apache.org by Kang <ia...@gmail.com> on 2010/06/24 19:08:21 UTC

[fileupload] upload file count is 0

the source below prints
size 0

I don't know why this gives size 0.

I spended couple of days to solve this problem.
Still don't have idea.

Help me please.

I use apache fileupload 1.2.1, on jboss 5.0.


=============================== file.html ===============================
<form action="http://100.100.100.100:8088/dmb/servlet/UploadServlet"
name="frm" ENCTYPE='multipart/form-data'
method='POST'>
<input type="file" name="file1"/><input type="button" onclick="frm.submit()"
value="submit" />
</form>

=============================== UploadServelt
===============================
package kr.co.elcomtech.servlet;

import java.io.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

import java.util.*;

public class UploadServlet extends HttpServlet {
 public void doGet(HttpServletRequest request, HttpServletResponse response)
{
  service(request, response);
 }
 public void doPost(HttpServletRequest request, HttpServletResponse
response) {
  service(request, response);
 }
 public void service(HttpServletRequest request, HttpServletResponse
response) {
  try {
   // Check that we have a file upload request
   boolean isMultipart = ServletFileUpload.isMultipartContent(request);

   if (isMultipart) {
    // Create a factory for disk-based file items
    FileItemFactory factory = new DiskFileItemFactory();

    // Create a new file upload handler
    ServletFileUpload upload = new ServletFileUpload(factory);
    // Parse the request
    List /* FileItem */ items = upload.parseRequest(request);

    // Process the uploaded items
    Iterator iter = items.iterator();
    System.out.println(items.size()+" :::::size:::::");
    while (iter.hasNext()) {
     FileItem item = (FileItem) iter.next();

     if (item.isFormField()) {
      processFormField(item);
     } else {
      processUploadedFile(item);
     }
    }
   }
  }
  catch (Exception e) {
   e.printStackTrace();
  }

 }
 private void processFormField(FileItem item) {
  String name = item.getFieldName();
  String value = item.getString();
  System.out.println("Item name: " + name +  " value: " + value);
 }

 private void processUploadedFile(FileItem item) throws Exception {
  String fieldName = item.getFieldName();
  String fileName = item.getName();
  String contentType = item.getContentType();
  boolean isInMemory = item.isInMemory();
  long sizeInBytes = item.getSize();

  boolean writeToFile = true;
  if (sizeInBytes > (5 * 1024 * 1024)) {
   writeToFile = false;
  }
  // Process a file upload
  if (writeToFile) {
   File uploadedFile = new File("<directory on the server' file system>"+
fileName);
   if (!uploadedFile.exists()) {
    uploadedFile.createNewFile();
   }
   item.write(uploadedFile);
  }
  else {
   System.out.println("Trying to write a large file.");
  }

 }
}