Servlet3.0简化实现文件上传

注意事项

  • POST请求可以传输二进制数据,而GET只能传输文本信息
  • form表单标签中声明属性 enctype="multipart/form-data"
  • 给Servlet添加注解@MultipartConfig,开启Servlet3.0文件上传组件开关

Servlet实现

@WebServlet(name = "UploadServlet",value = "/upload")
@MultipartConfig
public class UploadServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String nickname = request.getParameter("nickname");

        //文件上传
        Part filePart = request.getPart("headIcon");
        String header = filePart.getHeader("Content-Disposition");
        String fileName = this.getFileName(header);
        fileName = new Date().getTime() + fileName;
        //获取保存上传文件的文件夹的真实物理路径
        String uploadDir = this.getServletContext().getRealPath("/upload");
        //构建上传文件的完整路径
        String fileFullPath = uploadDir + File.separator + fileName;

        //输出文件
        filePart.write(fileFullPath);
    }

    private String getFileName(String headerInfo){
        String[] arr = headerInfo.split("\"");
        return arr[arr.length - 1];
    }

Html示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="upload" method="post" enctype="multipart/form-data">
        昵称:<input type="text" name="nickname"><br><br>
        头像:<input type="file" name="headIcon"><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

原文地址:https://www.cnblogs.com/pdpq/p/12039576.html

时间: 2024-11-05 19:27:06

Servlet3.0简化实现文件上传的相关文章

Servlet编程专题11之Servlet3.0特性实现文件上传

- 使用Servlet3.0实现文件上传,不需要借助第三方的jar包. 1.在index.jsp文件中编写文件上传的表单: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html

用VSCode开发一个asp.net core2.0+angular5项目(5): Angular5+asp.net core 2.0 web api文件上传

第一部分: http://www.cnblogs.com/cgzl/p/8478993.html 第二部分: http://www.cnblogs.com/cgzl/p/8481825.html 第三部分: https://www.cnblogs.com/cgzl/p/8525541.html 第四部分: https://www.cnblogs.com/cgzl/p/8536350.html 这部分就讲从angular5的客户端上传图片到asp.net core 2.0的 web api. 这是

express4.0以上版本文件上传

发现很多node的书介绍express文件上传都是基于3.*版本的, 现在express的版本都是4.+的,很多以前的代码跑不动了 所以自己折腾了个小demo 实现了限制上传文件种类和大小 例子是基于formidable模块的 github地址为https://github.com/felixge/node-formidable var express = require('express'); var formidable = require('formidable'); var router

ASP.NET Core 1.0中实现文件上传的两种方式(提交表单和采用AJAX)

Bipin Joshi (http://www.binaryintellect.net/articles/f1cee257-378a-42c1-9f2f-075a3aed1d98.aspx) Uploading files is a common requirement in web applications. In ASP.NET Core 1.0 uploading files and saving them on the server is quite easy. To that end

Struts2单文件上传原理及示例

一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域的值处理成URL编码方式. 2.multipart/form-data:这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里. 3.text/plain:这种方式主要适用于直接通过表单发送邮件的

struts(八)文件上传

文件上传简述 struts2的文件上传没有使用Servlet 3.0 API,所以struts2的文件上传还需要依赖于Common-FileUpload.COS等文件上传组件. 为了能上传文件,必须将表单的method设置为POST,将enctype设置为multipart/form-data,需添加 < input type="file"> 字段.这样,浏览器才会把用户选择文件的二进制数据发送给服务器. 设置了enctype为multipart/form-data,浏览器

[转]Struts2多个文件上传

转载至:http://blog.csdn.net/hanxiaoshuang123/article/details/7342091 Struts2多个文件上传多个文件上传分为List集合和数组,下面我们着重介绍一下list集合的上传.都大同小异.一 介绍1. 在struts2文件上传的时候要先导入struts2的几个包,在struts2.3.1.2中,导入的包如图所视: 从图上可以看出其中文件上传所需要的是包为commons-fileupload-1.2.2.jar和commons-io-2.0

5文件上传与下载

java领域有两个常用的文件上传项目:Common-FileUpload和COS.struts2则在原来的文件上传的项目基础上,进行进一步的封装,从而进一步地简化了文件上传.除此之外,struts2对文件下载支持stream的结果类型,通过借助于struts2提供的文件下载支持,应用可以实现非西欧字符文件名的文件下载,并可以在文件下载前检查用户的权限,从而通过授权控制来控制文件的下载. 文件上传原理 表单元素的enctype属性 大部分时候,无需设置表单元素的enctype属性,我们只设置表单的

PHP 获取文件上传进度

获取文件上传进度的方法很多,该文介绍的是使用session.upload_progress,基于PHP 5.4以上版本的方法. [1]文件php.ini 配置 根据实际情况进行设置 session.upload_progress.enabled[=1] : 是否启用上传进度报告(默认开启) session.upload_progress.cleanup[=1] : 是否在上传完成后及时删除进度数据(默认开启, 推荐开启). session.upload_progress.prefix[=uplo