(十五)Servlet教程——Servlet文件上传

        JSP和HTML标签一起使用,来允许用户把文件上传到服务器。

        首先我们需要创建一个前端界面,创建上传文件表单时,需要注意以下几点:

(1) 表单的method属性必须设置为POST方法, 不能使用GET方法。

(2) 表单enctype属性应该设置为multipart/form-data。

(3) 表单action属性应设置为对应的Servlet,Servlet包含处理上传文件的代码。

(4) 使用<input/>标签上传单个文件,属性type设置为file,上传多个文件需要添加多个input标签。

        前端我们使用html页面来实现,首先新建一个upload.html,该html的内容如下

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>文件上传</title>

</head>

<body>

<!--文件上传表单-->

<form method="post" enctype="multipart/form-data" action="uploadServlet">

    姓名:<input type="text" name="uname"><br>

    文件:<input type="file" name="myfile"><br>

    <button>提交</button>

</form>

</body>

</html>

其中button的默认类型是提交类型,type=”submit”。在该表单中普通的表单项使用type=”text”,附件类型的表单项使用type=”file”。不要忘了设置表单元素的name属性,表单提交一定要设置表单元素的name属性,否则后台无法接收数据。

接下来需要准备接收表单数据的Servlet。首先创建一个UploadServlet,该Servlet的具体代码如下

@WebServlet("/uploadServlet")

@MultipartConfig //如果是文件上传,需要设置该注解

public class UploadServlet extends HttpServlet {

    @Override

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        System.out.println("文件上传...");

        //设置请求的编码格式

        request.setCharacterEncoding("UTF-8");

        //获取普通表单项

        //此处uname和表单元素的name属性相对应

        String uname = request.getParameter("uname");

        System.out.println("uname: " + uname);

        //获取Part对象,Servlet将multipart/form-data的POST请求封装成Part对象

        Part part = request.getPart("myfile");

        //通过Part对象得到上传的文件名

        String fileName = part.getSubmittedFileName();

        System.out.println("上传文件名:" + fileName);

        //得到文件的存放路径

        String filePath = request.getServletContext().getRealPath("/");

        //保存文件到制定目录

        part.write(filePath + "/" + fileName);

    }

}

使用@MultipartConfig 注解将一个Servlet标记为支持文件上传。

启动该Web应用,在浏览器地址栏中输入URL: http://localhost:8080/s001/upload.html

 在“姓名”输入框中输入测试文本,并选择一个文件进行上传,在下图所示路径下可以看到上传的文件

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jerry95270628

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值