FileDocCategorySizeDatePackage
ProcessUploadAction.javaAPI DocExample1950Mon Sep 06 00:41:00 BST 2004com.oreilly.strutsckbk.ch11.ams

ProcessUploadAction.java

package com.oreilly.strutsckbk.ch11.ams;

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.upload.FormFile;

public class ProcessUploadAction extends Action {

	public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response) throws Exception {

		// Get the form file property from the form
		UploadForm uploadForm = (UploadForm) form;		
		FormFile content = uploadForm.getContent();

        if (content == null) {
            ActionMessage msg = new ActionMessage("error.maxFileSize.exceeded");
            ActionMessages errors = new ActionMessages();
            errors.add(ActionMessages.GLOBAL_MESSAGE, msg);
            saveErrors(request, errors);
            return mapping.getInputForward();
        }

        // continue processing upload ...
		InputStream in = null;
		OutputStream out = null;
		
    try {
  		// Get an input stream on the form file        
			in = content.getInputStream();
	
			// Create an output stream to a file
			out = new BufferedOutputStream (new FileOutputStream("temp.txt"));
	
			byte[] buffer = new byte[512];
			while (in.read(buffer) != -1) {
				out.write(buffer);
			}
    }
	  finally {
			if (out != null) out.close();
			if (in != null) in.close();	  	
	  }

		return mapping.findForward("success");
	}
}