博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
servlet3.0文件上传
阅读量:5826 次
发布时间:2019-06-18

本文共 1909 字,大约阅读时间需要 6 分钟。

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
servlet3.0文件上传

@WebServlet("/FileUploadServlet")@MultipartConfig        //表示支持文件上传,否则获得nullpublic 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);}

转载于:https://blog.51cto.com/13579086/2083445

你可能感兴趣的文章
重排序(转载)
查看>>
python+selenium之字符串切割操作
查看>>
串结构练习——字符串匹配
查看>>
linux下输入密码不回显
查看>>
《构建之法》读书笔记
查看>>
拿下阿里、头条、滴滴的offer后谈谈面试经验---动身前看一看
查看>>
android开发(49) android 使用 CollapsingToolbarLayout ,可折叠的顶部导航栏
查看>>
【ERP】如何在多行数据块中实现仅能勾选唯一的主联系人
查看>>
Oracle 数据库优化的R方法(Method R)
查看>>
CentOS最小化安装系统开启网卡
查看>>
互联网+升级到智能+ 开启万物智联新时代
查看>>
Linux文本编辑器之Nano
查看>>
【原】IOS中KVO模式的解析与应用
查看>>
理解 QEMU/KVM 和 Ceph(3):存储卷挂接和设备名称
查看>>
[MFC] CList
查看>>
[Android Pro] 完美Android Cursor使用例子(Android数据库操作)
查看>>
c++中sizeof的分析
查看>>
线程间操作无效: 从不是创建控件的线程访问它的解决方法
查看>>
hdu 1236 排名
查看>>
PHP面向对象深入研究之【继承】,减少代码重复
查看>>