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

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

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

二进制数据流的表单传值以及读取图片数据于是可以得到这样一个文件
二进制数据流的表单传值以及读取图片数据

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

indexOf()一旦检测到了title就readLine()两次,相当于下移两行并将读到的title的值存进一个字符串里
二进制数据流的表单传值以及读取图片数据

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

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

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

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

skip()是从输入流中跳过并丢弃 n 个字节的数据,我们在这里跳过并丢弃前面的所有信息,这样我们就可以复制出一张图片来了。给图片起名可用时间,以免同名被覆盖
二进制数据流的表单传值以及读取图片数据