二进制数据流的表单传值以及读取图片数据

本文介绍了如何使用Java的基本IO流处理表单中enctype="multipart/form-data"的二进制数据,特别是读取和保存图片文件。通过将表单内容写入文件,然后使用BufferedReader逐行读取,寻找数据分界线,跳过非图片数据,最终复制并保存图片。

众所周知,用了enctype="multipart/form-data"就无法直接通request.getParameter()来接收输入框内的参数。找了一圈 发现很多方法都是用了组件来解决,作为刚入门的小白,我想用最基本的io流来操作

1.将表单写入文件存放在本地

于是可以得到这样一个文件
在这里插入图片描述

2.用BufferedReader一行一行地读这个文件

indexOf()一旦检测到了title就readLine()两次,相当于下移两行并将读到的title的值存进一个字符串里
在这里插入图片描述

3.找到前面的信息和后面的文件数据中间的分界线

也就是,找到前面的信息究竟占了多少个字节。
将前面读取到的信息不断拼接成一个总的字符串,找到了image这一行,就把该字符串转为字节数组,记下该字节数组的长度,即记下前面所有信息所占的字节。需要注意的是,readLine不会自动添加换行符,需要自己加上"\r\n",否则不会换行

在这里插入图片描述

4.跳过前面的字节,复制粘贴后面的图片信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值