.net fileupload批量上传可删除_【JavaWeb基础】文件上传和下载(修订版)

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

什么是文件上传?

文件上传就是把用户的信息保存起来。

为什么需要文件上传?

在用户注册的时候,可能需要用户提交照片。那么这张照片就应该要进行保存。

上传组件(工具)

为什么我们要使用上传工具?

为啥我们需要上传组件呢?当我们要获取客户端的数据,我们一般是通过getParameter()方法来获取的。

上传文件数据是经过MIME协议进行分割的,表单进行了二进制封装。也就是说:getParameter()无法获取得到上传文件的数据。

我们首先来看看文件上传http是怎么把数据带过去的

  • jsp页面,表单一定要指定enctype:multipart/form-data

<form action="${pageContext.request.contextPath }/servlet/UploadServlet1" enctype="multipart/form-data" method="post">
  • http抓包

6537cbbc008212667c54e0f5ea29960e.png
这里写图片描述
  • 尝试在Servlet上使用getParameter()获取数据

"username");
  • 直接使用getParameter是获取不到数据的。

27f9346400e24caa1e897b64f69fc56b.png
这里写图片描述

那么我们要怎么办呢????request对象提供了ServletInputStream流给我们读取数据

  • 我们试着读取下文件

ServletInputStream inputStream = request.getInputStream();

byte[] bytes = new byte[1024];
int len = 0;

while ((len = inputStream.read(bytes)) > 0) {
  System.out.println(new String(bytes, 0, len));
}
  • 在jsp页面多增添一个input控件

<input type="text" name="password">
  • 我上传的文本文件内容就是111111,读取效果如下:

46c4dcee0a374ff291ddc3e188ca7ddc.png
这里写图片描述

现在我们能够读取上传文件的数据了,但是现在问题又来了:怎么把文件上传个数据和普通传送给服务器的数据分割开来呢???上面在图上我们已经看到了,他们是混合在一起的。

按我们平常的做法是很难分割开来的,所以我们需要上传组件


上传组件有两种

  • FileUpload【操作比较复杂】

  • SamrtUpload【操作比较简单】


FileUpload

要使用FileUpload组件,就需要导入两个jar包

  • commons-io

  • Commons-fileupload

开发步骤

  • 创建解析器工厂对象【DiskFileItemFactory】

  • 通过解析器工厂创建解析器【ServletFileUpload】

  • 调用解析器方法解析request对象,得到所有上传的内容【list】

  • 遍历list,判断每个对象是否是上传文件

  • 如果是普通表单字段,得到字段名和字段值

  • 如果是上传文件,调用InputSteam方法得到输入流,读取上传的数据


快速入门

try{

测试

  • 普通的字段和上传的文件都能读取得到了!

f2bb1275a109041a6a0bff1d0e279c16.png
这里写图片描述

SmartUpload

要使用SmartUpload组件,就需要导入smartupload.jar开发包

快速入门

//实例化组件

测试

同样地,我们可以上传文件到uploadFile文件夹中。代码量也的确减少很多!

也能够获取普通字段的参数

953c276494ca7d5a555d656609acf7ca.png
这里写图片描述

上传文件名的中文乱码和上传数据的中文乱码

  • 我把文件名改成中文,就乱码了

f006cbc978570637e33220b0504f4e85.png
这里写图片描述
  • 表单提交过来的中文数据也乱码了

460361109a6f3f12c633804294bb5385.png
这里写图片描述

上面已经说了,上传文件的数据的表单进行了二进制封装,所以使用request对数据编码编码,对于表单提交过来的数据是不奏效的!

FileUpload解决乱码

使用FileUpload解决乱码问题是十分简单的

  • 解决中文文件名乱码,得到解析器以后,就直接设置解析器的编码为UTF-8就行了!

//设置upload的编码
  • 解决表单数据乱码,在获取表单值的时候,按照UTF-8编码来获取

"UTF-8");

效果:

511f77f5e2171929b75e3a6558d5b672.png
这里写图片描述

SmartUpload解决乱码

这个组件解决乱码问题有点麻烦,在网上找了各种办法也没找到简单的……

所以,如果数据不涉及到中文就使用SmartUpload组件,涉及到中文数据就使用FileUpload组件吧!


多个文件上传,动态添加上传控件

假设我现在有多个文件要上传,而且要上传的个数是不确定的。那么我们要怎么办呢???

我们不可能列出很多很多个上传文件的控件在页面上,这样不美观。如果用户用不到那么多个控件,也浪费呀。

所以,我们想要动态地增添上传文件的控件,如果用户还想要上传文件,只需要动态地生成控件出来即可!

分析

要想在页面上动态地生成控件,无非就是使用JavaScript代码。

那么我们要怎么做呢??

这样子吧:当用户想要上传文件的时候,就点击按钮,按钮绑定事件,生成文件上传的控件

为了做得更加完善,每当生成了文件上传的控件,也提供一个删除按钮,删除该控件!

我们应该使用div装载着我们要生成的控件和删除按钮,而用户点击删除的时候,应该是要把删除按钮和文件上传控件都一起隐藏起来的。所以,最好就是使用嵌套div

代码

  • 页面代码:

<table border="1px">
  • javaScript代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

object detection之Win10配置

1、下载models。 https://github.com/tensorflow/models 并文件解压。 2、下载protos文件 https://github.com/protocolbuffers/protobuf/releases?afterv3.9.1 我这里下载的3.7.0版本。注意一定要下载protoc-xxx-win64.zip版本。必须是带有win64的压缩包&#xff0c;否则可…

计算机原理含汇编语言,计算机组成原理(含汇编语言)试题库.docx

文档介绍&#xff1a;《计算机组成原理(含汇编语言)》试题库供信息管理与信息系统专业(医学信息管理)使用(一)判断题1.在数字计算机中所以采用二进制是因为二进制的运算最简单。2.在所有的进位计数制中,整数部分最低位的权都是1。3.某R进位计数制,其左边一位的权是其相邻的右边…

idea卸载不干净怎么办_fxfactory卸载不干净?Fxfactory及插件卸载教程

fxfactory卸载不干净怎么办&#xff1f;fxfactory是一款非常受欢迎的视频特效插件合集&#xff0c;能应用到FCPX、AE、PR、motion等软件中。过多特效插件下载会导致这些软件运行打开速度慢&#xff0c;那么如何卸载fxfactory这款软件或者删除那些特效插件呢&#xff1f;跟随小编…

矩阵标准型的系数是特征值吗_「线性代数」根据特征值,将二次型化为标准形、规范形...

今天我们来聊一聊线性代数中的二次型化为规范形、标准形的内容&#xff0c;这块知识相当重要&#xff0c;我看了看&#xff0c;几乎每一年的考研数学中都会涉及到一道关于这个知识点的题目&#xff0c;这次的整理&#xff0c;不仅帮助大家整理清楚思路&#xff0c;也是为自己整…

职称计算机考试有哪些题,职称计算机考试判断复习题「有答案」

一、判断题1.在Word的“文件”命令菜单底部显示的文件是扩展名为.doc的所有文件。()2.Word的打印预览只能显示文档的当前页。()3.双击Excel窗口左上角的控制菜单可以快速退出Excel。(√)4.在Excel97中&#xff0c;可通过“格式”菜单中的列命令来调整行高。()5.删除Word表格的方…

计算机丢失UxTheme无法修复,Win7系统启动程序失败提示“计算机中丢失UxTheme.dll”怎么办...

win7系统启动程序失败出错提示”无法启动此程序&#xff0c;因为计算机中丢失UxTheme.dll。尝试重新安装该程序以解决此问题“怎么办呢&#xff1f;UxTheme.dll是什么&#xff1f;其实UxTheme.dll是支持win7主题的核心文件&#xff0c;丢失UxTheme.dll就无法使用第三方主题了&a…

docker 设置 jvm 内存_是否值得付费?Oracle,Open JDK等四大JVM性能全面对比

市面上可供选择的JVM发行版还是有不少的。选择合适的JVM需要考虑不同的因素。性能是其中一个重要的因素。靠谱的性能研究是很困难的。在本文中&#xff0c;我创建了一个测试&#xff0c;在不同的JVM上执行对比测试。测试程序包括Spring Boot REST应用&#xff0c;使用Prometheu…

object detection错误之Could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR

在trainer.py 中 session_config tf.ConfigProto(allow_soft_placementTrue,log_device_placementFalse)下添加&#xff1a; session_config.gpu_options.allow_growth True 即可

计算机考研初试复试比例,考研初试400多分,16人都被刷,计算机专业报考人太多,报应来了...

在目前大家都一味地挤着报考计算机专业&#xff0c;其他工科专业都被抛弃&#xff0c;以至于很多考研分数400的依然是被刷掉&#xff0c;这就是近期天津大学计算机专业考研复试的情况&#xff0c;在以前&#xff0c;考400以上都被称之为神人&#xff0c;但现在报考计算机专业40…

object detection错误之no module named nets

将在slim下的BUILD文件移到其他地方&#xff0c;重新在slim下运行 python setup.py build python setup.py install

python自动控制程序_巧用 python 脚本控制你的C程序

python是一门艺术语言&#xff0c;除了开发桌面程序&#xff0c;还能够开发网络应用&#xff0c;数据库应用&#xff0c;还可以代替shell编写一些的实用脚本&#xff0c;本文主要讲述了如何利用 python 程序控制你的 C 程序的行为。 作为例子&#xff0c;本文将用 python 和 C …

怎样考计算机教师资格证书,非师专生怎么考取计算机教师资格证书?

满意答案ff8410012013.04.08采纳率&#xff1a;41% 等级&#xff1a;12已帮助&#xff1a;22396人先要到户口所在地的教育局报名&#xff0c;报名的时间各地都不一样的&#xff0c;不统一&#xff0c;可以咨询当地教育局。。。如果你没有考教育学心理学和普通话就会组织你考…

基础功能-tensorflow使用gpu

方法一&#xff1a;这个会使用最小的GPU资源 config tf.ConfigProto() config.gpu_options.allow_growth True self.sesstf.Session(configconfig) 方法二&#xff1a; config tf.ConfigProto() config.gpu_options.per_process_gpu_memory_fraction 0.4 # 占用GPU40%的…

circle loss代码实现_Python全栈之路-23-使用Python实现Logistic回归算法

视频讲解地址使用Python实现Logistic回归算法_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com本文代码地址​github.comLogistic回归是统计学习中经典的分类方法。二项Logistic回归模型概率分布如下其中为权重&#xff0c;为偏置。 一个事件发生的概率与该事件不发生的…

UserWarning: Matplotlib is currently using agg in Object Detection API

【解决办法】在models\research\object_detection\utils\visualization_utils.py 文件中&#xff0c;注释掉&#xff1a;import matplotlib; matplotlib.use(Agg)。如下图所示&#xff1a; 作者&#xff1a;LabVIEW_Python 链接&#xff1a;https://www.jianshu.com/p/5eaa66a5…

生物大分子的计算机模拟就业,生物大分子模拟

《生物大分子模拟》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《生物大分子模拟(14页珍藏版)》请在人人文库网上搜索。1、第一1、 computational biology计算机生物学是利用计算的方法对复杂生命现象和过程进行研究和预测的科学。它是理论与数据分析、数学建模和计…

c++堆栈溢出怎么解决_栈溢出基础

一. 基础知识什么是缓冲区溢出在深入探讨技术之前, 让我们先了解一下缓冲区溢出的实际内容.想象一个非常简单的程序, 要求你输入你的用户名, 然后返回到它在做什么.从视觉上看, 如下所示注意到括号之间的空格是输入用户名的预期空间.那个空间是我们的缓冲.处理用户名后, 返回地…

object detection训练自己数据

1、用labelImg标自己数据集。 并将图片存放在JPEGImages中&#xff0c;xml存放在Annotations中 2、分离训练和测试数据 import os import randomtrainval_percent 0.66 train_percent 0.5 xmlfilepath Annotations txtsavepath ImageSets\Main total_xml os.listdir(xml…

计算机检索word文档检索式,完整word版)中国知网等文献检索的一般方法

《完整word版)中国知网等文献检索的一般方法》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《完整word版)中国知网等文献检索的一般方法(9页珍藏版)》请在人人文库网上搜索。1、文献检索一般方法同学们&#xff1a;可能你们目前接触到的文献并不多&#xff0c; 但以后…

python数据处理和数据分析的区别_python数据处理(七)之数据探索和分析

1.探索数据 1.1 安装agate库 1.2 导入数据 1.3 探索表函数 a.排序 b.最值&#xff0c;均值 c.清除缺失值 d.过滤 e.百分比 1.4 连结多个数据集 a.捕捉异常 b.去重 c.缺失数据的处理 d.联结数据集 1.5 识别相关性 利用numpy分析 1.6 找出离群值 a.使用标准差 b.使用绝对中位差 &…