在TCP/IP中,我们知道最早的上传机制为FTP,它是指将文件由客户端发送到服务器的标准机制。然而我们在jsp编程中不能使用FTP来上传文件,这是由于jsp运行机制决定的。
                                        文件上传原理
    表单提交->二进制编码->Servlet中使用二进制流获取内容
我们需要将表单内容设置为:
    Method=”post” enctype=”multipart/form-data”
表单的enctype属性:
    1、默认属性:application/x-www-form-urlencoded,只处理表单域中的value属性值,采用这种编码的方式的表单会将表单域的值处理成url编码方式
    2、multipart/form-data,这种编码方式的表单会以二进制流的方法来处理表单数据。这种编码方式会将文件域指定文件的内容也封装到请求参数里
    3、text/plain,这种方式主要适用于直接通过表单发送邮件的方式
                                        文件下载原理
    1、通过HttpServletResponse.setContentType方法设置Content-Type字段的值,设置为application/octet-stream或application/x-msdownload,决定客户端服务器以那种方式来接受返回的信息
    2、通过HttpServletResponse.setHeader方法设置Content-Disposition头的值为”attachment;filename=文件名”,浏览器通过附件的形式来获取到用户上传的文件
    3、读取下载文件,通过HttpServletResponse.getOutputStream方法返回ServletOutputStream对象来向客户端写入附件文件的内容
这就是java中文件上传下载的原理

java中文件的上传和下载:文件上传和下载原理相关推荐

  1. java中如何生成可执行的jar文件

    java中如何生成可执行的jar文件最简单的方法就是:jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$my ...

  2. java中poi导出Excel表格(前台流文件接收)

    java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...

  3. 在java中使用SFTP协议安全的传输文件

    本文介绍在Java中如何使用基于SSH的文件传输协议(SFTP)将文件从本地上传到远程服务器,或者将文件在两个服务器之间安全的传输.我们先来了解一下这几个协议 SSH 是较可靠,专为远程登录会话和其他 ...

  4. gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载)

    场景 ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...

  5. 在java中jvm目录_JVM具体在哪个文件夹下的

    \jdk1.6.0 -- JDK的根目录,包含一些软件版权,声明,和自述文件, 同时包含归档了的Java平台源代码包src.zip \jdk1.6.0\bin -- JDK包含的一些开发工具执行文件 ...

  6. Java中使用UUID给图片命名的文件上传方法

    场景 照片上传时给重命名时使用UUID进行重命名. 实现 在实现方法上传的方法中调用工具类的地方 Map<String, Object> result = ImageUtil.getIns ...

  7. linux下执行python脚本并传入参数_实现在Java中执行python代码或py脚本(可传参数)...

    写在前面 最近用Java写服务端程序时,遇到这样一个需求:需要把用python写的机器学习算法部署到服务器上,然后Java执行py脚本,并且取得算法执行的结果.在网上找了很久,有些跑不通,有些是基于w ...

  8. java中的Executors简介与多线程在网站上逐步优化的运用案例

    提供Executor的工厂类 忽略了自定义的ThreadFactory.callable和unconfigurable相关的方法 newFixedxxx:在任意时刻,最多有nThreads个线程在处理 ...

  9. 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...

    问题 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程.我想获得该子进程的线程/堆转储. 在Unix上,我可以做akill -3 但是在Windows AFAIK上获取线程转 ...

  10. java中freemarker使用ftl模版生成PDF文件

    说明 调用方法生成PDF时,使用的ftl模版,以及字体都是从jar中读取的,无需担心多节点部署 引用jar <dependency><groupId>org.freemarke ...

最新文章

  1. java sdf.parse_用DateFormat的parse方法验证字符串是否是日期的问题
  2. 《Angular4从入门到实战》学习笔记
  3. 让我们山寨一张Windows Azure Global的壁纸
  4. html图片与周围元素边界5px,css3如何将图像设置为元素周围的边框
  5. PHP文件 字符集编码!
  6. gradle ant_使用Gradle引导旧式Ant构建
  7. matlab plot绘制曲线
  8. api laravel 统一返回方法_Laravel-自定义API返回的JSON格式
  9. win8安装wampserver报403错误解决方法
  10. 汇编语言基本概念(续13)
  11. tar打包/解包用法
  12. 【坐在马桶上看算法】算法3:最常用的排序——快速排序
  13. idea顶部工具栏、底部工具栏、两边工具栏的显示与隐藏
  14. 计算机硬件系统储存包括那些,硬件系统包括什么
  15. 保研英语自我介绍计算机,计算机保研面试英文自我介绍
  16. 推荐一款绘图神器visual-paradigm
  17. echarts中在地图上显示label时的阴影问题
  18. 单片机搭建环境烧录方法_万物互联-stm32单片机简介、烧录、编程及其项目环境搭建...
  19. HTML+CSS个人笔记
  20. JDK14环境变量配置,JDK版本切换(Win10)

热门文章

  1. 如何有效抑制路段车速 保障通学、生活道路安全?
  2. python爬财务数据_同花顺财经-财务数据爬取思路详解-python爬虫
  3. 胡戈的“鸟笼山剿匪记”与馒头
  4. 思考题1:根据日志计算同类型文件的大小
  5. ubuntu12.04 安装eclipse C++,并配置交叉编译工程
  6. 一个简单的抽奖转盘游戏
  7. 360开机小助手js循环效果出现的问题
  8. 徐州社保容灾备份系统集成和设备采购goldengate
  9. Vue——v-model的三种修饰符lazy、number、trim
  10. 天线信号强度测试软件,内置六天线发威 R6300v2信号测试_NETGEAR R6300v2_网络设备评测-中关村在线...