文件上传下载原理

在TCP/IP中,最早出现的文件上传机制是FTP。它是将文件由客户端发送到服务器的标准机制。

但是在jsp编程中不能使用FTP方法来上传文件,这是由jsp运行机制所决定的

文件上传原理:

  通过为表单元素设置Method=“post” enctype=“multipart/form-data”属性,让表单提交的数据以二进制编码的方式提交,在接收此请求的Servlet中用二进制流来获取内容,就可以取到上传文件的内容,从而实现文件的上传。

表单enctype属性 

application/x-www-form-urlencoded 这是默认编码方式,它只处理表单域里的value属性值,采用这种编码方式的表单会将表单域里的值处理成URL编码方式

multipart/form-data 这种编码方式的表单会以二进制流的方式来处理表单数据,这种编码方式会把文件域指定文件的内容也封装到请求参数里。

text/plain 这种方式主要适用于直接通过表单发送邮件的方式

文件下载原理

STEP1

需要通过HttpServletResponse.setContextType方法设置Content-Type头字段的值,为浏览器无法使用某种方式或激活某个程序来处理MIME类型,例如“application/octet-stream”  或 “application/x-msdownload” 等。

STEP2

需要通过HttpServletResponse.setHeader方法设置Content-Disposition头的值为“attachment;filename=文件名”

STEP3

读取下载文件,通过HttpServletResponse.getOutputStream方法返回的ServletOutputStream对象来向客户端写入附件内容。

最新文章

  1. Android:让WebView支持<input type=”file”…>元素
  2. C++命名规范
  3. TortoiseGit 添加ssh key
  4. .Net文件*夹*操作
  5. c语言编程之双向循环链表
  6. JS 实现 ResizeBar,可拖动改变两个区域(带iframe)大小
  7. 安卓Design包之NavigationView结合DrawerLayout,toolbar的使用,FloatingActionButton
  8. 代码笔记-触摸事件插件hammer.js使用
  9. JavaScript高级程序设计19.pdf
  10. WAMP 环境下,YII创建失败 提示 "'php.exe' 不是内部或外部命..."
  11. JavaSE学习总结第05天_Java语言基础1
  12. cocos2d-x CCNode类
  13. UIView animateWithDuration 使用详解
  14. Link-Cut-Trees
  15. eclipse导入已有工程
  16. Ubuntu12.04下Django1.4的删除目录
  17. C# 中使用面向切面编程(AOP)中实践代码整洁
  18. 安装 redis 拓展
  19. .Net Core Nlog日志记录到MySql
  20. 剑指Offer 9. 变态跳台阶 (递归)

热门文章

  1. php与mysql交互 面向过程
  2. 在centOS 7 上部署ansible自动化运维环境(01)
  3. MySQL Lock--MySQL INSERT加锁学习
  4. Oracle 12cR1 RAC集群安装(二)--使用图形界面安装
  5. oracle 11g导出少了空表,原因分析
  6. fastJSON的常用方法总结
  7. Java线程状态、线程start方法源码、多线程、Java线程池、如何停止一个线程
  8. sql中如何获取一条数据中所有字段的名称和值
  9. HDU - 3644:A Chocolate Manufacturer's Problem(模拟退火, 求多边形内最大圆半径)
  10. httpclient post请求中文乱码解决办法