servlet3.0文件上传

1.浏览器端:选择图片、提交表单,同时将图片发送给服务器
<form action=”” method=”post” enctype=”multipart/form-data”>
<input type=”file” name=”image”>
<input type=”submit”>
上传的内容,都在请求体中。
2.服务器端:
1)手动获得请求体,需要手动解析。request.getInputStream()
2)使用servlet3.0
3)第三方工具 – apache-commons-fileupload
4)struts2

@WebServlet("/FileUploadServlet")
@MultipartConfig        //表示支持文件上传,否则获得null

public class FileUploadServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    //1 普通字段
    String username = request.getParameter("username");
    System.out.println(username);

    //2 上传字段
    Part part = request.getPart("image");
    //2.1 获得文件名
    // * IE         --> C:\Users\liangtong\Desktop\heima.txt
    // * 其他浏览器  --> heima.txt
    String contentDisposition = part.getHeader("Content-Disposition");
    System.out.println(contentDisposition);
    // * 截取文件名
    int start = contentDisposition.indexOf("filename=") + 10;
    int end = contentDisposition.length() - 1;
    String fileName = contentDisposition.substring(start, end);

    // * 浏览器兼容  -- lastIndexOf() 如果没有获得返回 -1
    fileName = fileName.substring( fileName.lastIndexOf("\\") + 1);

    System.out.println(fileName);

    //2.2 获得上传文件内容
    InputStream is = part.getInputStream();

    //2.3 将流写入到服务器文件中
    // * 上传目录
    String dir = this.getServletContext().getRealPath("/WEB-INF/upload");
    File file = new File(dir , fileName);

    // * 流的对拷
    FileOutputStream out = new FileOutputStream(file);

    byte[] buf = new byte[1024];
    int len = -1;
    while( (len = is.read(buf)) != -1 ){
        out.write(buf, 0, len);
    }

    out.close();
    is.close();

}

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    doGet(request, response);
}

原文地址:http://blog.51cto.com/13579086/2083445

时间: 2024-10-10 03:07:24

servlet3.0文件上传的相关文章

servlet3.0文件上传功能

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); //获取文件部件part Part part = request.getPart("file"); String h = part.getHeader(&

jsp Servlet 3.0文件上传

Servlet 3.0之前上传文件一般都要借助与第三方插件上传,有了servlet3.0后,上传文件从此变得简单.老规矩,直接上代码. 1.建立一个index.jsp用于表单提交 1 <%@ page language="java" contentType="text/html; charset=utf-8" 2 pageEncoding="utf-8"%> 3 <!DOCTYPE html PUBLIC "-//W3

Spring MVC4使用Servlet3 MultiPartConfigElement文件上传实例

在这篇文章中,我们将使用Spring MultipartResolver 实现 StandardServletMultipartResolver在Servlet3环境中实现单点和多文件上传功能.Spring提供了内置的multipart支持来处理Web应用程序文件上传. 简短的概述 在这篇文章中,我们将使用Servlet3.0以及javax.servlet.MultipartConfigElement,为了激活 Servlet3.0环境和Spring 的Multipart支持,你需要做以下: 1

java servlet 3.0文件上传

在以前,处理文件上传是一个很痛苦的事情,大都借助于开源的上传组件,诸如commons fileupload等.现在好了,很方便,便捷到比那些组件都方便至极.以前的HTML端上传表单不用改变什么,还是一样的multipart/form-data MIME类型. 让Servlet支持上传,需要做两件事情 需要添加MultipartConfig注解 从request对象中获取Part文件对象 但在具体实践中,还是有一些细节处理,诸如设置上传文件的最大值,上传文件的保存路径. 需要熟悉Multipart

yii2.0 文件上传

Yii 2.0 出来好长时间了,一直都是看下官方网站,没实践过,今天弄了下图片上传操作. 1创建一个简单的数据表 mysql> desc article; +---------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------+--------------+------+-----+---------+--------

Yii 2.0 文件上传

先创建一个(UploadForm.php)模型层 <?phpnamespace app\models; use yii\base\Model;use yii\web\UploadedFile; /*** UploadForm is the model behind the upload form.*/class UploadForm extends Model{    /**    * @var UploadedFile file attribute    */    public $file;

laravel oauth2.0 文件上传报错

报错信息:   "message": "Invalid stream or file provided for UploadedFile",    "exception": "InvalidArgumentException",    "file": "E:\\unionnet\\vendor\\zendframework\\zend-diactoros\\src\\UploadedFile.ph

Servlet3.0简化实现文件上传

注意事项 POST请求可以传输二进制数据,而GET只能传输文本信息 form表单标签中声明属性 enctype="multipart/form-data" 给Servlet添加注解@MultipartConfig,开启Servlet3.0文件上传组件开关 Servlet实现 @WebServlet(name = "UploadServlet",value = "/upload") @MultipartConfig public class Upl

用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. 这是