SpringMVC文件上传的SmartUpload版例子

文件上传
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
例3.1:

<%@ page contentType="text/html; charset=GBK" %>
<html>
<body>
<h1>
<%
if(request.getParameter("i")!=null)
{
out.print("上传了"+request.getParameter("i")+"个文件");
}
%>
</h1>
we must use post, otheriwse, report negativeArray error.
<form method="post" action="uploadF.do" enctype="multipart/form-data">
<br>
<input  type="text" name="user" value="可以中文"/>
<!--the following name does not matter.-->
<input  type="file" name="upload"/>
<input  type="file" name="upload1"/>
<br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" value="Reset">
</form>
</body>
</html>



package com;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.ServletConfigAware;
import org.springframework.web.context.ServletContextAware;
import org.springframework.web.context.support.WebApplicationContextUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.support.RequestContextUtils;

import com.jspsmart.upload.File;
import com.jspsmart.upload.Files;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;

@Controller
public class HelloWorldController implements ServletConfigAware,ServletContextAware {
    private ServletContext servletContext;
    @Override
    public void setServletContext(ServletContext arg0) {
        this.servletContext = arg0;
    }
    private ServletConfig servletConfig;
    @Override
    public void setServletConfig(ServletConfig arg0) {
        this.servletConfig = arg0;
    }

    @RequestMapping("/uploadF.do")
    public void uploadF(HttpServletRequest request, HttpServletResponse response,
            HttpSession sesssion)  throws IOException, ServletException {
        System.out.println("user1 is " + request.getParameter("user"));
        SmartUpload su = new SmartUpload();
        int i = 0;
        ServletContext sec=RequestContextUtils.getWebApplicationContext(request).getServletContext();
        ApplicationContext app = WebApplicationContextUtils.getWebApplicationContext(sec);
        String s = sec.getRealPath("");
        System.out.println("s is" + s);
        su.initialize(servletConfig, request, response);
        try {
            su.upload();
            i = su.save(s + "/upload");
        } catch (SmartUploadException e) {
            e.printStackTrace();
        }
        Files files = su.getFiles();
        File f = (File) files.getFile(0);
        System.out.println("upload file name is " + f.getFileName());
        com.jspsmart.upload.Request r = su.getRequest();
        System.out.println("中文user is " + r.getParameter("user"));
        response.sendRedirect("upload.jsp?i=" + ("" + i));
    }
}

本例里面也教会了大家如何获取ServletContext,servletConfig,ApplicationContext(注意有的Spring项目不是Web类型的,比如有的有main方法)等