分享好友 最新动态首页 最新动态分类 切换频道
(二十六)文件上传和下载
2024-12-27 10:22

目录

(二十六)文件上传和下载


实现web开发中的文件上传功能,需要完成如下二步操作:

  1. 在web页面中添加上传输入项
  2. 在servlet中读取上传文件的数据,并保存到本地硬盘中

如何在web页面中添加上传输入项

  • 标签用于在web页面中添加上传输入项,设置文件上传输入项的时需要注意:

    1. 必须要设置 输入项的 属性,否则浏览器将不会发送上传文件的数据。这就是之前发现的那个,如果一个标签没有 属性,是不会被提交的 。

    2. 必须把 属性设置 , 设置该值后,浏览器在上传文件时,把文件数据附带在 请求消息体 中,并使用 协议对上传的文件进行描述,以方便接收方对上传数据进行解析和处理 。

    3. :这种表单提交,和以前的表单提交不一样,比如以前获取用户名,直接获取提交参数,就好了;使用了 协议以后,提交的数据格式将不再和以前一样,格式如下所示,因此,要获取其中的额数据,我们需要去使用特定的解析 ;


如何在 中读取文件上传数据,并保存到本地硬盘中?

  • 对象提供一个 方法,通过这个方法可以获取客户端提交过来的数据。
  • 但是由于用户可能会同时上传多个文件,在 端编程直接读取上传的数据,并解析出相应文件的数据是一件非常麻烦的工作。
  • 为了方便处理用户上传数据, 开源组织提供了一个用来处理表单上传文件的一个开源组件(),该组件性能优异,并且 API 使用简洁 ;
  • 使用 Commons-fileupload 组件实现文件上传,需要导入该组件相应的jar包:





  • 乱码问题

    1. 文件名乱码问题

      因为是老外写的,里面的内置的编码是,因此,在读取中文的时候,会出现乱码;

      即使我们设置了的码表,也是无济于事的,对此,我们需要设置下解析器的码表 ;

    2. 普通字段乱码问题

      这里由于表单类型是 ,即使我们设置了的编码,也是无济于事的,因为,问题出在, 方法上,它内部使用了

      要想改变它,用 的重载方法 ;


  • 验证表单类型

    1. 在开始操作之前,先判断下表单类型,

      返回 表示是上传表单 ;用于检测是否有人搞破坏!

  1. 文件大小、缓冲区问题

    1. 上传文件特别大情况,设置 ,临时文件需要自己设置自动删除 ;

    2. ;

    3. 设置内存缓存区大小,默认为 。当上传文件大于缓冲区大小的时候, 组件将使用临时文件缓存上传文件 ;

      也就是说,当文件大小缓冲区的时候,使用缓冲区保存文件;如果临时文件缓冲区大小,则不使用缓冲区,而是先将文件写到临时文件里面保存 ;

      也就是说,当文件缓冲区大小的时候,组件的作为一个中转站,先将文件写到缓冲区中,再从缓冲区写到服务器上 ;

      如果文件大小缓冲区大小,则不再使用缓冲区作为中转站,而是使用作为中转,先将客户端的文件写到组件一个临时文件中,再从临时文件中写到服务器上 ;

      备注:为什么需要中转

      原因很简单,中转说白了,就是一个缓冲区,我们将文件从文本上传到服务器,如果不使用缓冲区,直接从本地到服务器,每次磁头读取一次,然后送到服务器,然后磁头再次读取,循环往复;而每次磁头读取硬盘都是一个耗时的工作,我们应该减少磁头读取硬盘次数,或者说磁头读取一次硬盘,尽量的多读取数据,从而减少读取的次数,这样我们就需要,一个中转,让磁头一次读取更多的数据,然后保存到缓冲中;

      如果没有中转当缓冲,那么一次磁头读取一个字节以后,就必须停止,待数据送达服务器端,才可以再次读取;这显然是不合理的,因此,我们需要缓冲区!

    4. 设置临时文件位置

    使用 ,指定临时文件位置,参数接受一个文件路径,这里我们是在JEE中使用File,因此,需要得到文件的绝对路径,而不是相对路径;

    使用 获取文件真实路径

    指定临时文件目录,默认值是

    临时文件需要我们删除掉,使用方法 ;

    注意删除方法,要放在关闭流之后,否则还有流与文件关联,是删不掉的 ,确保被删掉,还需要放在里面;


对于保存上传文件,文件的保存目录,是绝对不能被外界访问到的;否则上传一段文本,然后访问这个文件,就会被执行!

这个目录的地址,需要好好写,不要在获得真实路径的字符串最后加上 ,路径和名字,中间用 路径分隔符 拼接,使用 来适应不同的系统 ;

其中,在上传文件的时候,项目中的文件夹下,是没有文件产生的,产生的文件在文件下 ;

文件的保存路径,我们必须放在文件夹下面,还有一个问题需要解决,windows操作系统,每个文件夹下面的直接文件数量超过的时候,打开该文件,就会卡顿,文件夹中文件夹中的数量,不算在直接文件数量中

因此,我们需要设计出一个算法,来分配上传的文件;这里,我们根据文件名的哈希码来分配文件位置,哈希码是一个int值,一共32位,每4位为一个层次,生成文件夹,最多可以生成8层,可以保存上兆的文件了。;








在处理文件的时候,先获取文件的后缀名,做个判断,看是否在我们允许的文件类型之中 ;



如果文件没有上传,则服务器端获取 的时候是


利用 生成随机ID ,再加上原本文件的名字,来防止文件名冲突的问题;


中利用代码,动态的添加、删除 ;

JS代码:


为解析器注册一个监听器,解析器里面有方法,当有数据被解析的时候,会被调用 ;

根据这个方法的参数,可以获取当前上传文件的进度 ;


超链接中有中文的时候,需要URL编码 ;

在JSP 标签中,我们使用 标签,来完成URL编码 ;

设置编码,对get方法提交的数据无效 ;



  1. 递归列出服务器的所有文件,数据量大的情况下,注意分页 ;
  2. 中显示文件的时候,注意URL编码;
  3. 点击下载的时候,将文件的带过去;
  4. 中,根据获取,要下载的文件对象,这个文件对象中封装该文件的信息;
  5. 检查判断文件是否存在;
  6. 文件存在,则进行文件名的编码,这里注意 和 其他浏览器的不同点;
  7. 对文件名中的空格,进行特殊处理;

最新文章
美术装备之画板的购买要点介绍,快乐收藏!
美术装备之画板的购买要点是什么?下面我们来了解一下。美术装备之画板必须做到,画架稳固,画板平整,绘图板的质量与其加工材料密不可分分的关系,通常常见的木材和金属材料,木制画架应用广泛,性价比高,但使用一段时间后支撑平稳度会变
高清美女写真生成工具评测:一键生成你的完美女友!
3. 使用搜狐简单AI生成美女写真的步骤 如果您决定尝试搜狐简单AI,以下是几个简单的步骤指南:步骤一:访问微信小程序通过微信搜索“搜狐简单AI”小程序,进入主页面。步骤二:选择模板在首页,您可以看到多个风格的模板,挑选您喜爱的样式
孩子单招报什么专业(孩子单招报什么专业好一点)
随着社会的发展和人们对教育的重视,越来越多的家长开始关注孩子的未来,尤其是孩子的职业规划和专业选择。对于即将参加高考的学生来说,选择一个适合自己的专业是至关重要的。本文将从多个方面详细阐述孩子单招报什么专业(孩子单招报什么
肥西网站排名优化多少钱?揭秘影响优化成本的关键因素,合肥网站优化如何
肥西网站排名优化成本受多个因素影响,包括关键词竞争度、网站基础条件、优化策略及周期等。关键词竞争度越高,优化难度和成本越大;网站基础条件如结构、内容质量等也会影响优化效果及成本;优化策略需根据具体情况制定,不同策略成本不同
零基础打造个人专属空间,实用搭建指南
本方案旨在从零开始,助您打造专属个人实用。涵盖规划、、主机选择、搭建、内容管理等方面,一步步实现个性化空间。无论您是初学者还是有一定经验的用户,都能轻松上手,开启您的之旅。明确类型与功能挑选适宜的建设购置域名与进行设计开展
腾讯文档 AI 开启公测附申请链接 一键生成Word / Excel / PPT / 思维导图等
腾讯文档今日宣布,腾讯文档 AI 即日开启公测,面向全网用户陆续开放体验,支持全品类文档生成、跨品类信息处理等。目前公测名额限量30000名,可通过官方链接申请。我们从官方介绍获悉,腾讯文档 AI 支持一句话生成 Word / Excel / PPT /
淘宝个人店铺和企业店铺有什么不同?(建议个人店铺升级为企业店铺)
随着淘宝平台的不断壮大,越来越多的人开始在淘宝开店了,我们可以把淘宝店铺分为个人淘宝店铺以及淘宝企业店铺,这两种店铺类型是有区别的,下面的内容中我们了解一下这两者之间到底有什么区别哦。1、注册企业店铺注册需要用营业执照,而
超級SEO助手,如何批量发布文章?
SEO Helper 客户端是 http://seohelper.cn 网站开发的 SEO 工具软件,其主要为用户br提供SEO相关的信息查询服务,从而使用户能够更方便地了解各种信息,如网站在百度、谷歌、br雅虎、搜狗等搜索引擎的页面收录数量和反向链接数量,网站的Pa
【5D时代动感影院加盟】开店加盟5D时代动感影院,立马做老板!
电影院是人们经常去的休闲娱乐场所,它环境干净,舒适,是非常适合人休闲的地方。加上有时有趣搞笑,紧张刺激,有时跌宕起伏的电影剧情,使得好像观看的人们也经历了一次不同凡响的体验,这样观众也觉得这张电影票值了。电影的票价也不是
seo公司有哪些公司(seo公司有哪些公司名称)
大家好,今天小编关注到一个比较有意思的话题,就是关于seo公司有哪些公司的问题,于是小编就整理了3个相关介绍seo公司有哪些公司的解答,让我们一起看看吧。网站seo公司哪家好?一般公司中完整的SEO团队都包括哪些职位?杭州外贸seo哪家公
相关文章
推荐文章
发表评论
0评