一.
From表单增加enctype属性,二进制格式上传
增加这个属性后,后台无法通过request.getparameter()来取值,也就无法通过得到
OP值来执行switch的判断操作
因此通过Stuservlet无法完成上传文件操作
二.上传文件通过第三方jar包完成,主要有三类
- apache的commons-fileupload
主流方式,菜鸟教程也是这个,上传文件蛮方便的,但是取回其他input感觉麻烦,主要是我太菜,没能摸透吧。
- O‘Reilly的cos
大概看了下Demo,感觉也不方便
- jspsmart的SmartUpload
这个听说效率不高,但是贼方便,取值,上传文件贼轻松啊兄弟们,我们就用它了,它缺点是对中文处理不好,内部编码处理是gbk,我们需要改一下页面编码即可,放心,不影响你们数据库的编码,只是前端改gbk,当然你也可以改jar包源码,百度一下就行,好像也有改好的jar包,你们直接下载用也行,CSDN的收费,他妈的。
- 12种你们可以试一下,我就不试了,见好就收
三,不BB,上硬菜,上面说了无法在Stuservlet中进行文件上传操作,因此再写一个
- 在你的servlet文件下新建一个UploadServlet.java
代码参考UploadServlet.java
- 几个重点说一下
此处为数据库的插入,是不是感觉取值很方便,直接就取回来了,牛逼。
Xh1是我自己的命名方式,你们改成你们自己的xh就行。
此处的for循环作用是处理多个上传文件用的,我直接复制的Demo,没有去掉,因为我们一次只上传一张照片,所以此处的for循环是可以去掉不用的,加上也没影响
重点:saveAs()执行文件写入操作,
前面的img是你的存储文件夹的相对位置,你们根据自己的需求修改
后面的是文件名,命名规则就按我这个来,xh1改成xh即可
- servlet写完后去配置XML文件
- 去修改addStu.jsp的action这样点击增加按钮时,便不会再去执行Stuservlet了,而是现在的uploadservlet
- 去修改stuShow.jsp
去相对地址把图片取回来即可,宽度改成50左右,否则会占满屏幕
四 随便补充两句
- 改gbk编码
这么改一下就行,第一行那个其实可以不用改,我觉得,不过我没试,就全改了
只要改addStu.jsp 即可,其他的不用改。
- 如果按照这个步骤操作完了,还是没成功,可以刷新一下容器,就是重启或者更新一下服务器
原文地址:https://www.cnblogs.com/xiaozao/p/9733329.html