图片上传

 项目分层:

UP.jsp 页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'UP.jsp' starting page</title>
   
  </head>
 
  <body>
    <form action="../UpLoadServlet" method="post" enctype="multipart/form-data">
        用户名<input type="text" name="uname"/><br>
        密码:<input type="passsword" name="upwd"/><br>
        文件一:<input type="file" name="file1" ><br>
        文件二:<input type="file" name="file2"/>
        <input type="submit" value="提交"/>
    </form>
  </body>
</html>

 

Success 页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'Success.jsp' starting page</title>
  </head>
 
  <body>
  name:${requestScope.uname}
  passwor: ${requestScope.upwd }
   file1: ${requestScope.file1}
      file2:  ${requestScope.file2}
  </body>
</htm

 

 

Web.xml文件配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">


  <servlet>
    <servlet-name>UpLoadServlet</servlet-name>
    <servlet-class>com.servlet.UpLoadServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>UpLoadServlet</servlet-name>
    <url-pattern>/UpLoadServlet</url-pattern>
  </servlet-mapping>


</web-app>

 

Slervlet处理类

package com.servlet;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

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

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

public class UpLoadServlet extends HttpServlet {
    public UpLoadServlet() {
        super();
    }
    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 {

            doPost(request, response);
    }
    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
            //response.setCharacterEncoding("gbk");
        DiskFileItemFactory factory=new DiskFileItemFactory();
        String path=request.getRealPath("//");//获取绝对路径
       
        factory.setRepository(new File(path));//能临时存放的文件
        factory.setSizeThreshold(1024*1024);//超过 1024*1024 的字节的文件 就存放到临时文件 否则放到内存
       
        ServletFileUpload upload=new ServletFileUpload(factory);
       
        try {
            //得到一个表单说所有项的集合 一个字段当作一个FileItemitem
            List<FileItem> list=upload.parseRequest(request);
            for (FileItem item : list) {
               
                if(item.isFormField())//非文件类型的表单FileItem
                {
                    String name=item.getFieldName();//获得表单字段 name
                    String value=item.getString("gbk");//获得表单字段的值 并且进行编号转换
                    request.setAttribute(name, value);
                }else
                {
                    //文件类型的处理
                    String name=item.getFieldName();//获得表单字段 的name
                    String value=item.getName();//得到表单 file里面的值 (路径)
                   
                    //截取得到上传文件的名称  ——例如 G:/kankan/电影.bmp 的到 电影.bmp
                    String fileName=value.substring(value.lastIndexOf("//")+1);// "//"通过jdk编译之后转意为 "/"
                    request.setAttribute(name, fileName);//把文件名称放进作用域
                    //构造一个输出流
                    OutputStream os=new FileOutputStream(new File(path+"//fileUpload//upload",fileName));
                    //得到当前文件的输入流
                    InputStream is=item.getInputStream();
                    byte []butter=new byte[400];
                   
                    int length=0;
                    while ((length=is.read(butter))>0) {
                       
                        os.write(butter,0,length);//写文件
                    }
                    os.close();
                    is.close();
                }
            }
            request.getRequestDispatcher("/fileUpload/Success.jsp").forward(request, response);
        } catch (FileUploadException e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
            request.getRequestDispatcher("/fileUpload/Success.jsp").forward(request, response);
        }finally{
           
        }
       
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occure
     */
    public void init() throws ServletException {
        // Put your code here
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值