JavaServlet实现文件上传

来源:互联网 发布:拍爱心的软件 编辑:程序博客网 时间:2024/06/10 03:16

第一部分 index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Servlet3.0文件上传应用示例</title>
  </head>
 
  <body>
   <form action="upFile" method="post" enctype="multipart/form-data">
    <table>
     <tr>
      <td>
       选择文件
      </td>
      <td>
       <input type="file" name="file">
      </td>
     </tr>
     
     <tr>
      <td>
       描述
      </td>
      <td>
       <input type="text" name ="description">
      </td>
     </tr>
     
     <tr>
      <td colspan="2">
       <input type="submit" value="提交" > &nbsp;&nbsp;
       <input type="reset" value="重置">
      </td>
     </tr>
    </table>
   </form>
  </body>
</html>

第二部分 FileUploadServlet.java
package com.web.UpFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;

@WebServlet(name="upFile",urlPatterns={"/upFile"})
@MultipartConfig(maxFileSize=-1,maxRequestSize=-1)
public class FileUploadServlet extends HttpServlet{
 public void doGet(HttpServletRequest req,HttpServletResponse resp)
   throws ServletException,IOException{
  doPost(req,resp);
 }
 
 public void doPost(HttpServletRequest req,HttpServletResponse resp)
   throws ServletException,IOException{
  //获取请求参数值
  Part part = req.getPart("file");
  //存储路径
  String storePath = req.getServletContext().getRealPath("/temp");
  //获取请求头
  String header = part.getHeader("content-disposition");
  //获取文件后缀名
  String suffix = parseFileName(header);
  //重命名
  String name= UUID.randomUUID()+suffix;
  //吧文件写到指定路径
  part.write(storePath+File.separator+name);
  //获得文件描述信息
  String description = req.getParameter("description");
  req.setAttribute("f", name);
  req.setAttribute("des", description);
  req.getRequestDispatcher("info.jsp").forward(req, resp);
 }

 private String parseFileName(String header) {
  return header.substring(header.lastIndexOf("."),header.length()-1);
 }
}

第三部分 info.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
   
    <title>Servlet3.0文件上传应用示例</title>

  </head>
 
  <body>
    <h3><%=request.getAttribute("des") %></h3>
    <img alt="" src="<%=basePath %>temp/<%=request.getAttribute("f") %>">
  </body>
</html>

本实例只是简单介绍步骤,只能实现图片上传后的显示,至于上传的文本文件,没有做出显示。

0 0
原创粉丝点击