iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >基于java文件上传-原始的Servlet方式
  • 233
分享到

基于java文件上传-原始的Servlet方式

java文件上传servlet 2023-05-31 08:05:58 233人浏览 泡泡鱼
摘要

前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感觉最不爽的时候,没有归属感,房租还不便宜,

前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感觉最不爽的时候,没有归属感,房租还不便宜,RT,不能好高骛远,还是脚踏实地一点一点学技术吧,终将有一日,工资会涨的。

java文件上传

传统的文件上传,不用Jquery插件的话,就是用fORM表单提交,项目里用过uploadify,可以异步上传文件,原理我也没研究。现在说传统的form表单上传文件。

文件上传核心:

用<input type=”file”/> 来声明一个文件域。样式如 文件:_____ <浏览>.

必须使用post方式提交表单。

必须设置表单的类型为multipart/form-data.是设置这个表单传递的不是key=value值。传递的是字节码.

新建web项目:

jsp form表单:enctype(编码类型)的默认值就是 application/x-www-form-urlencoded

基于java文件上传-原始的Servlet方式 基于java文件上传-原始的Servlet方式浏览器查看 Http报文:基于java文件上传-原始的Servlet方式主要参数:Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/WEBp,**表示所有。Referer:http://localhost:8888/upload/ 来自哪个网站Accept-Language:zh-CN,zh;q=0.8 :请求回应中首选的语言为简体中文Accept-Encoding:gzip, deflate, br支持的压缩格式User-Agent:Mozilla/5.0 (windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 用户浏览器类型Host:localhost:8888 主机地址Connection:keep-alive 报文发送完毕后仍然保持连接Cache-Contrp: max-age=0 缓存Content-Length: 41 41字节对文件上传来说,重要的参数是:Content-Type: application/x-www-form-urlencoded这个参数只有post请求才有,默认就是application/x-www-from-urlencoded ,Content-type表示正文类型,get方式没有正文,因为参数在url里。在Servlet里可以用request对象取到Content-type:request.getHeader("Content-type"); 默认的值为 application/x-www-form-urlencoded,如果是get请求,则 request.getHeader("Content-type");为null。下图是get请求时的http头信息:基于java文件上传-原始的Servlet方式  

文件上传,必须设置enctype="multipart/form-data"
from表单:基于java文件上传-原始的Servlet方式上传一个Word基于java文件上传-原始的Servlet方式此时的http消息: Content-Type:multipart/form-data; boundary=----WebKitFormBou ndarywYwQ3v1NemO0bPfM 。
其中的 boundary=----WebKitFormBoundary44gVxAkoSg3tk3oR 指的是文件上传的分隔符。
基于java文件上传-原始的Servlet方式看请求的报文: boundry=xxxxx 标识文件开始,也有文件头,说的是上传的数据的类型,第一个input 是text类型,第二个是二进制,content-type 是application/octet-stream 表示 二进制流。上传图片,Content-Type: image/jpeg,上传文本,Content-Type: text/plain。基于java文件上传-原始的Servlet方式 二进制流的接收:当表单类型是post类型,切enctype="multipart/form-data",则所有的数据都是以二进制流的形式向服务器上传,所以request.getParameter("xxx") 永远为null,只能通过req.getInputStream(); 获取正文。上传一个txt:基于java文件上传-原始的Servlet方式Servlet:

package com.lhy.upload;import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.httpservlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@WebServlet(name="UploadServlet",urlPatterns="/UploadServlet")public class UploadServlet extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp)   throws ServletException, IOException {//  this.doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp)   throws ServletException, IOException {    req.setCharacterEncoding("UTF-8");  String contentType = req.getHeader("Content-type");  System.out.println("contentType: "+contentType);  String name = req.getParameter("name");  System.out.println(name);//null    InputStream is = req.getInputStream();    //  ------WebKitFormBoundaryG0ULv7eVfQ1K2PBA//  Content-Disposition: form-data; name="image"; filename="静夜思.txt"//  Content-Type: text/plain//////  ------WebKitFormBoundaryG0ULv7eVfQ1K2PBA--  BufferedReader br = new BufferedReader(new InputStreamReader(is));  String firstLine = br.readLine();//第一行,分隔符  String fileName = br.readLine();//  Content-Disposition: form-data; name="image"; filename="jingyesi.txt"  fileName = fileName.substring(fileName.lastIndexOf("=")+2,fileName.length()-1);    br.readLine();  br.readLine();  String data = null;  //获取当前项目的运行路径  String path = getServletContext().getRealPath("/up");  PrintWriter pw = new PrintWriter(path+"/"+fileName);  while((data = br.readLine()) != null){   if(data.equals(firstLine+"--")){    break ; //读到了文件尾   }   pw.println(data);  }  pw.flush();  pw.close();  is.close();     } }

--结束END--

本文标题: 基于java文件上传-原始的Servlet方式

本文链接: https://www.lsjlt.com/news/224402.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 基于java文件上传-原始的Servlet方式
    前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感觉最不爽的时候,没有归属感,房租还不便宜,...
    99+
    2023-05-31
    java 文件上传 servlet
  • Java基于BIO实现文件上传功能
    本文实例为大家分享了Java基于BIO实现文件上传功能的具体代码,供大家参考,具体内容如下 客户端 package com.qst.file; import java.io.B...
    99+
    2024-04-02
  • Java中文件上传的方式有哪些
    本文小编为大家详细介绍“Java中文件上传的方式有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中文件上传的方式有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。请求类型单文件上传 &n...
    99+
    2023-07-02
  • Java基于BIO怎么实现文件上传功能
    这篇文章给大家介绍Java基于BIO怎么实现文件上传功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。客户端package com.qst.file;import java.io.BufferedI...
    99+
    2023-06-21
  • Servlet实现文件的上传与下载
    前言: 文件的上传和下载在日常开发中很是常见,那么这一功能是如何实现的呢,下面我给大家介绍一下 实现条件: 1、需要一个form标签,method为post请求 2、form的enc...
    99+
    2024-04-02
  • SpringBoot2如何基于Yml配置方式实现文件上传逻辑
    这篇文章主要为大家展示了“SpringBoot2如何基于Yml配置方式实现文件上传逻辑”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot2如何基于Yml配置方式实现文件上传逻辑”...
    99+
    2023-06-02
  • Servlet文件的上传与下载详解
    目录文件的上传和下载1. 文件上传细节2. 文件上传3. 文件下载文件的上传和下载 1. 文件上传细节 要有一个 form 标签,method-post请求 (因为get有长度限制)...
    99+
    2024-04-02
  • 基于Spring实现文件上传功能
    本小节你将建立一个可以接受HTTP multi-part 文件的服务。你将建立一个后台服务来接收文件以及前台页面来上传文件。要利用servlet容器上传文件,你要注册一个MultipartConfigElement类,以往需要在web.xm...
    99+
    2023-05-31
    spring 文件上传 实现文件
  • Java中的多种文件上传方式总结
    目录请求类型单文件上传多文件上传多文件单字段上传多文件多字段上传请求类型 单文件上传 //上传单个文件 @ResponseBody @RequestMap...
    99+
    2024-04-02
  • 基于HTML5 Ajax文件上传进度条的实现方法
    这篇文章主要介绍“基于HTML5 Ajax文件上传进度条的实现方法”,在日常操作中,相信很多人在基于HTML5 Ajax文件上传进度条的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • 基于ajax的html如何实现文件上传
    这篇文章主要介绍基于ajax的html如何实现文件上传,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 怎样自定义样式?1)、只管按照自己喜欢看到的样式去定义即可,如<a h...
    99+
    2024-04-02
  • 基于HttpClient上传文件中文名乱码的解决
    现象 使用HttpClient工具上传文件时,如果文件名是中文,文件名会乱码 文件名乱码的代码: private HttpEntity buildEntity(Long scen...
    99+
    2024-04-02
  • Android基于OkHttp实现文件上传功能
    本文实例为大家分享了Android基于OkHttp实现文件上传的具体代码,供大家参考,具体内容如下 一、相关概述 Android请求访问服务端大多数情况下依旧是使用http协议,故而...
    99+
    2024-04-02
  • 基于HTML5+js+Java实现单文件文件上传到服务器功能
    上传单文件到服务器                  &nb...
    99+
    2023-05-31
    js java 上传
  • django上传文件的三种方式
    目录Django文件上传需要考虑的重要事项Django文件上传的3种常见方式项目创建与设置创建模型URLConf配置使用一般表单上传文件使用ModelForm上传文件GitHub源码...
    99+
    2024-04-02
  • Servlet文件的上传与下载怎么实现
    本文小编为大家详细介绍“Servlet文件的上传与下载怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Servlet文件的上传与下载怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。文件的上传和下载1...
    99+
    2023-07-02
  • 基于SpringBoot上传任意文件功能的实现
    一、pom文件依赖的添加<dependencies> <dependency> <groupId>org.springframework.boot</groupId> ...
    99+
    2023-05-31
    springboot 上传 任意文件
  • 关于文件上传MultipartBody的使用方法
    目录文件上传MultipartBody的使用下面给出核心的代码,然后分析一下MultipartBody取出key,value数据,打印参数文件上传MultipartBody的使用 最...
    99+
    2024-04-02
  • 基于Vue3文件拖拽上传功能实现
    文件上成功能在我们的身边经常遇到,下面小编通过实例代码给大家分享实现方法,效果图如下所示: <template> <div :class="['drag'...
    99+
    2022-11-13
    vue3拖拽上传 vue文件拖拽上传
  • SpringMVC基于注解方式实现上传下载
    目录一、文件下载1-1、servlet原生方式下载1-2、使用ResponseEntity实现下载二、文件上传2-1、添加commons-fileupload依赖2-2、配置spri...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作