1、介绍enctype

enctype 属性规定发送到服务器之前应该如何对表单数据进行编码。

enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样)

1、1 enctype的取值有三种

描述

application/x-www-form-urlencoded

在发送前编码所有字符(默认)

multipart/form-data

不对字符编码。每一个表单项分割为一个部件

text/plain

空格转换为 “+” 加号,但不对特殊字符编码。

1. 当enctype=’application/x-www-form-urlencoded’

2.当enctype=’multipart/form-data’

通过观察发现这个的请求体就发生了变化。这种请求体被称之为多部件请求体。

什么是多部件请求体:就是把每一个表单项分割为一个部件。

以请求头的content-type的boundary后面的一串随机字符串作为分割标识

普通表单项:

//name的意思是文本框里面name的属性值,而admin是我们输入的文本值

Content-Disposition: form-data; name="username"

admin

文件表单项

//filename的意思是:我们上传的文件名称,content-Type的意思是:MIME类型,asdasdas的意思是:文件里面的内容

Content-Disposition: form-data; name="upload"; filename="a.txt"

Content-Type: text/plain

asdasdas

3. 当enctype=’text/plain’

w3c称:空格会变成”+”加号,但是我这里没有发现,只有当get请求的时候,空格会变成”+”号

进入正题

完成上传需要满足3个必要的条件

提供form表单,method必须是post,因为get请求的传输数据一般为2kb,不同浏览器不一样。

form表单属性enctype的必须是multipart/form-data

提供input type=”file”类的上传输入域

大致实现原理:当enctype的值是multipart/form-data时,浏览器会把每个表单项进行分割,分割成不同的部件,以boundary的值为分割标识,这个标识的字符串是随机生成的,最后一个表单项的分割标识字符串末尾会多两个”- -“,代表结束。服务端用request.getHeader(“content-type”)获取分割字符串,然后进行解析。

代码实现

一、开发环境搭建

准备两个第三方jar包

commons-io包

commons-upload包

所有依赖包

代码实现

下载的必须条件

两个头一个流

content-type

Content-Type是返回消息中非常重要的内容,表示文档内容属于什么MIME类型。

浏览器会根据Content-Type来决定如何显示返回的消息体内容。

默认值是text/html

可以使用request.getServletContext().getMimeType(“文件名”)获取MIME类型。

Content-Disposition

Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件。

默认值是inline,表示在浏览器窗口中打开。

服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器 中显示。

如果需要提示用户保存,利用Content-Disposition进行一下处理,关键在于一定要加上attachment。

例如:Content-Disposition:attachment;filename=xxx,浏览器就会激活下载框对话框, attachment 表示附件, filname 后面跟随的是显示在下载框中的文件名称。

下载就是向客户端响应字节数据! 将一个文件变成字节数组, 使用 response.getOutputStream()

来响应给浏览器。

代码如下,此代码已经实现了断点续传功能,用户在下载过程可以暂停,和继续下载,对服务器造成的压力也比较小。

加载文件列表,在下载列表中显示出来

后端代码逻辑大部分是相同的,目前能够支持MySQL,Oracle,SQL。在使用前需要配置一下数据库,可以参考我写的这篇文章:http://blog.ncmem.com/wordpress/2019/08/12/java-http%E5%A4%A7%E6%96%87%E4%BB%B6%E6%96%AD%E7%82%B9%E7%BB%AD%E4%BC%A0%E4%B8%8A%E4%BC%A0/

WEB超大文件上传与下载相关推荐

  1. Web实现文件上传和下载

    目录 如何实现文件上传 文件上传相关的API Fileltem接口 DiskFileItemFactory类 ServletFileUpload类 [任务]实现文件上传 [任务目标] [实现步骤] 文 ...

  2. java web fileupload_javaweb 文件上传(fileupload) 下载

    1 文件上传 html中通过可以向服务器上传文件.不过后台需要手动解析请求,比较复杂,所以可以使用smartupload或apache的fileupload组件进行文件的上传.smartupload据 ...

  3. PHP超大文件上传与下载

    前段时间做视频上传业务,通过网页上传视频到服务器. 视频大小 小则几十M,大则 1G+,以一般的HTTP请求发送数据的方式的话,会遇到的问题:1,文件过大,超出服务端的请求大小限制:2,请求时间过长, ...

  4. ASP.NET超大文件上传与下载

    总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...

  5. http超大文件上传方案

    需求:项目要支持大文件上传功能,经过讨论,初步将文件上传大小控制在500M内,因此自己需要在项目中进行文件上传部分的调整和配置,自己将大小都以501M来进行限制. 第一步: 前端修改 由于项目使用的是 ...

  6. java上传大文件_Java超大文件上传解决办法

    这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了: 上传文件实体类: 看得 ...

  7. WSE3.0构建Web服务安全(4):MTOM消息传输优化和文件上传、下载

    MTOM消息优化传输机制主要应用于大量数据的传输,很多文章中也直接得出结论:使用MTOM文件传输效率高.为什么MTOM的数据传输效率会比别的方式要高?MTOM真的如此完美吗,它有什么不足?什么情况下使 ...

  8. springboot+web文件上传和下载

    一.首先安装mysql数据库,开启web服务器. 二.pom.xml文件依赖包配置如下: <?xml version="1.0" encoding="UTF-8&q ...

  9. Java Web项目中遇到的文件上传与下载问题

    (转发自:https://www.cnblogs.com/xdp-gacl/p/4200090.html)   在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中 ...

最新文章

  1. 第十、十一周项目-阅读程序,写出这些程序的运行结果(3)
  2. 【Spring注解系列01】@Configuration与@Bean
  3. 【Python基础】Python处理文件的几个常用小知识
  4. java permgen内存泄漏问题处理
  5. 华为值多少钱?院士倪光南:13000亿美元!超过苹果,碾压阿里!
  6. 这几天整理的 飞秋官方下载
  7. 分布式日志平台--ELKStack实践
  8. 18650锂电池保护板接线图_锂电池保护板的过流保护测试方案
  9. 【pyqt5学习】——日历控件calendarWidget设置单元格格式(前景、背景)、日历控件属性编辑
  10. 阅读STC(宏晶)公司的芯片手册知识
  11. 性格测试系统v1.0
  12. 新手入门教程:关于网站建设的主要流程和步骤
  13. 读书笔记:在改变的时代改变自己
  14. 识人、识货、识场—— 这就是智能零售该有的样子
  15. 云存储及其分布式文件系统
  16. WPF实现棋盘式图片切换效果
  17. 医美整形机构业务流程讲解
  18. ThinkPHP6使用七牛云存储,不改代码,改下配置就上七牛
  19. web端 刷卡器_在WEB浏览器使用IC卡读卡器的几种方案的对比
  20. 网络游戏服务器架构流程

热门文章

  1. android蓝牙协议,Android蓝牙协议-蓝牙扫描 startDiscovery
  2. ShardingShpere分库分表5-ShardingSphere分布式事务详解
  3. 4个亲测有效的视频压缩工具,压缩视频体积小、画质清晰
  4. ov5640帧率配置_《使命召唤 黑色行动 冷战》详细PC配置需求公布
  5. 武汉新时标文化传媒有限公司短视频品牌推广
  6. 连接池原理介绍+常用连接池介绍
  7. 让男人又恨又爱加倍疼惜的十八种撒娇方式
  8. 【汇正财经】股票是长期持有好还是短线好?
  9. 为什么人生下来就有意识 人脑五大未解之谜
  10. 【DP】西北大学集训队选拔赛(重现赛) B 饱和式救援