java中文件的上传和下载:文件上传和下载原理
在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中文件的上传和下载:文件上传和下载原理相关推荐
- java中如何生成可执行的jar文件
java中如何生成可执行的jar文件最简单的方法就是:jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$my ...
- java中poi导出Excel表格(前台流文件接收)
java中poi导出Excel表格,前端以流的方式接收,而非直接生成文件再下载,解决多台服务器部署后,路径地址不统一导致的下载问题. 生成Excel示例图: 2.代码说明 ① 在上次的基础上增加了底部 ...
- 在java中使用SFTP协议安全的传输文件
本文介绍在Java中如何使用基于SSH的文件传输协议(SFTP)将文件从本地上传到远程服务器,或者将文件在两个服务器之间安全的传输.我们先来了解一下这几个协议 SSH 是较可靠,专为远程登录会话和其他 ...
- gPRC简介以及Java中使用gPRC实现客户端与服务端通信(附代码下载)
场景 ProtoBuf的介绍以及在Java中使用protobuf将对象进行序列化与反序列化: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...
- 在java中jvm目录_JVM具体在哪个文件夹下的
\jdk1.6.0 -- JDK的根目录,包含一些软件版权,声明,和自述文件, 同时包含归档了的Java平台源代码包src.zip \jdk1.6.0\bin -- JDK包含的一些开发工具执行文件 ...
- Java中使用UUID给图片命名的文件上传方法
场景 照片上传时给重命名时使用UUID进行重命名. 实现 在实现方法上传的方法中调用工具类的地方 Map<String, Object> result = ImageUtil.getIns ...
- linux下执行python脚本并传入参数_实现在Java中执行python代码或py脚本(可传参数)...
写在前面 最近用Java写服务端程序时,遇到这样一个需求:需要把用python写的机器学习算法部署到服务器上,然后Java执行py脚本,并且取得算法执行的结果.在网上找了很久,有些跑不通,有些是基于w ...
- java中的Executors简介与多线程在网站上逐步优化的运用案例
提供Executor的工厂类 忽略了自定义的ThreadFactory.callable和unconfigurable相关的方法 newFixedxxx:在任意时刻,最多有nThreads个线程在处理 ...
- 你如何在java中获取线程堆_如何在Windows上获取未在控制台中运行的Java进程的线程和堆转储...
问题 我有一个Java应用程序,我从控制台运行,然后控制台执行另一个Java进程.我想获得该子进程的线程/堆转储. 在Unix上,我可以做akill -3 但是在Windows AFAIK上获取线程转 ...
- java中freemarker使用ftl模版生成PDF文件
说明 调用方法生成PDF时,使用的ftl模版,以及字体都是从jar中读取的,无需担心多节点部署 引用jar <dependency><groupId>org.freemarke ...
最新文章
- java sdf.parse_用DateFormat的parse方法验证字符串是否是日期的问题
- 《Angular4从入门到实战》学习笔记
- 让我们山寨一张Windows Azure Global的壁纸
- html图片与周围元素边界5px,css3如何将图像设置为元素周围的边框
- PHP文件 字符集编码!
- gradle ant_使用Gradle引导旧式Ant构建
- matlab plot绘制曲线
- api laravel 统一返回方法_Laravel-自定义API返回的JSON格式
- win8安装wampserver报403错误解决方法
- 汇编语言基本概念(续13)
- tar打包/解包用法
- 【坐在马桶上看算法】算法3:最常用的排序——快速排序
- idea顶部工具栏、底部工具栏、两边工具栏的显示与隐藏
- 计算机硬件系统储存包括那些,硬件系统包括什么
- 保研英语自我介绍计算机,计算机保研面试英文自我介绍
- 推荐一款绘图神器visual-paradigm
- echarts中在地图上显示label时的阴影问题
- 单片机搭建环境烧录方法_万物互联-stm32单片机简介、烧录、编程及其项目环境搭建...
- HTML+CSS个人笔记
- JDK14环境变量配置,JDK版本切换(Win10)
热门文章
- 如何有效抑制路段车速 保障通学、生活道路安全?
- python爬财务数据_同花顺财经-财务数据爬取思路详解-python爬虫
- 胡戈的“鸟笼山剿匪记”与馒头
- 思考题1:根据日志计算同类型文件的大小
- ubuntu12.04 安装eclipse C++,并配置交叉编译工程
- 一个简单的抽奖转盘游戏
- 360开机小助手js循环效果出现的问题
- 徐州社保容灾备份系统集成和设备采购goldengate
- Vue——v-model的三种修饰符lazy、number、trim
- 天线信号强度测试软件,内置六天线发威 R6300v2信号测试_NETGEAR R6300v2_网络设备评测-中关村在线...