jsp文件上传

1,  jsp 页面的代码

<% @ page language="java" import="java.util.*" pageEncoding="UTF-8" %>
< html >
 
  
< body >  
                                                 
<!--  encType 必不可少  -->
    
< form  action ="upImgServlet"  method ="post"  encType =multipart/form-data >
        
        描述:
        
< input  type ="text"  name ="description" />< br /> 选择图片:
        
< input  type ="file"  name ="img" />
        
< input  type ="submit"  value ="提交" />
    
</ form >
  
</ body >
</ html >

2, UpImgServlet 的代码.

 


public   class  UpImgServlet extends HttpServlet  {

    
public void destroy() {
        super.destroy(); 
// Just puts "destroy" string in log
        
// Put your code here
    }


    
public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
{

        response.setContentType(
"text/html");
        request.setCharacterEncoding(
"UTF-8");
        response.setCharacterEncoding(
"UTF-8");

        
// org.apache.commons.fileupload.DiskFileUpload 是一个开源包里的。
        DiskFileUpload du = new DiskFileUpload();
        du.setSizeMax(
4194304); // 设置最大文件尺寸,这里是4MB
        du.setSizeThreshold(4096);// 设置缓存区大小 ,4 kb;
        
// up 为 /WebRoot 下的 一个目录
        du.setRepositoryPath(request.getSession().getServletContext()
                .getRealPath(
"/up"));// 设置缓存目录

        
// 得到所有文件
        try {
            List list 
= du.parseRequest(request);
            Iterator it 
= list.iterator();
            
while (it.hasNext()) {
                org.apache.commons.fileupload.FileItem fileItem 
= (FileItem) it
                        .next();

                
// 是否为表单元素。如文本框 等等。
                if (fileItem.isFormField()) {
                    String name 
= fileItem.getFieldName();
                
                    
//通过流 用来读取表单元素里的内容。
                    java.io.BufferedReader br = new BufferedReader(
                               
new InputStreamReader(fileItem.getInputStream()));
                    
                    
//如果还有除文件域以外的其他表单元素 就用 if()进行名字一一匹配。
                    if(name.equals("description")){
                        String contents 
=  br.readLine();
                        System.
out.println(contents);
                        
                    }

                    
                }

                
// 文件域
                else {
                    
// 获得文件名,这个文件名包括路径:
                    String fileName = fileItem.getName();
                    
int index = fileName.lastIndexOf('.');
                    fileName 
= fileName.substring(index);
                    fileName 
= this.getFileName() + fileName;                                    //文件保存位置 
                    fileItem.write(new File(request.getSession().getServletContext().getRealPath("/img")+ "/" + fileName));
                    
                    System.
out.println("上传成功");
                }

            }


        }
 catch (FileUploadException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (Exception e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }


        PrintWriter 
out = response.getWriter();

        
out.flush();
        
out.close();
    }


    
public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
{
        
this.doGet(request, response);
    }


    
public void init() throws ServletException {
        
// Put your code here
    }


    
// 以日期 获得一个文件名。(不重复);
    String getFileName() {
        java.util.Calendar cal 
= Calendar.getInstance();

        
int year = cal.get(Calendar.YEAR);
        
int mon = cal.get(Calendar.MONTH);
        
int day = cal.get(Calendar.DATE);
        
int hour = cal.get(Calendar.HOUR);
        
int min = cal.get(Calendar.MINUTE);
        
int sec = cal.get(Calendar.SECOND);
        
int mi = cal.get(Calendar.MILLISECOND);

        System.
out.println("mon" + mon);
        System.
out.println("day" + day);
        
return "" + year + mon + day + hour + min + sec + mi;

    }


}

基于 Eclipse3.2 开发.

在  WebRoot 下新建 up  和 img  目录.

其中 up 为缓存目录.   img 为上传的 文件保存的目录.

相关文章