enctype=“multipart/form-data”,Servlet获取参数 原创 2017年03月21日 18:46:44 标签:enctype /servlet文件上传 2094 HTML表

enctype=“multipart/form-data”,Servlet获取参数
原创 2017年03月21日 18:46:44 标签:enctype /servlet文件上传 2094
HTML表单enctype属性是设置表单传输的MIME编码,共有三个值可选:


  ①application/x-www-form-urlencoded (默认值,不能用于文件上传)

  ②multipart/form-data (指定传输数据为二进制类型,比如图片、mp3、文件)

  ③text/plain (纯文本传输,发送邮件,接收时不会出现乱码)

UploadDemo.jsp
[html] view plain copy
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
    <title>文件上传</title>  
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">  
  </head>  
  <body>  
    <form action="${pageContext.request.contextPath}/servlet/ServletUploadDemo" method="post" enctype="multipart/form-data">  
        name:<input type="text" name="name"/><br/>  
        age:<input type="text" name="age"><br/>  
        file:<input type="file" name="file"/><br/>  
        <input type="submit" value="上传"/>  
    </form>  
  </body>  
</html>  

ServletUploadDemo.java

[java] view plain copy
package com.text;  
  
import java.io.IOException;  
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;  
  
//Servlet3.0+可以不用web.xml文件,改用注解方式映射。  
//文件上传已经是Servlet3.0+必有的。  
//Part:接口。代表表单中的每一项。相当于FileItem  
@WebServlet("/servlet/ServletUploadDemo")  
  
@MultipartConfig//**加上这个注解,反射该Servlet时才知道处理的是文件上传  
  
public class ServletUploadDemo extends HttpServlet {  
    public void doGet(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        //普通参数还可以照常取出(@MultipartConfig不能忘)  
        String name = request.getParameter("name");  
        String age = request.getParameter("age");  
        //特殊参数用part取  
        Part part = request.getPart("file");  
//      System.out.println(name+"--"+age);  
//      System.out.println(part);  
  
        //获取文件名  
        String contentDisposition = part.getHeader("Content-Disposition");  
        System.out.println(contentDisposition);// form-data; name="file"; filename="User.sql"  
        int filenameIndex = contentDisposition.indexOf("filename=");  
        String filename = contentDisposition.substring(filenameIndex+10, contentDisposition.length()-1);  
  
        part.write(getServletContext().getRealPath("/files")+"/"+filename);  
    }  
  
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        doGet(request, response);  
    }  
  
}  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值