做女神投票网站碰到的问题

期末的JAVA作业:女神投票网站

 

没有用任何框架,因为要和一些没接触过JAVA WEB的人一起合作,于是采用了简单的JSP+servlet

 

主要的问题出在:在添加女神模块中form表单中除了一些名字,简介,还要有照片上传

照片上传我就采用了我博客中第一篇文章,用commons-fileupload以及commons-io两个包实现的文件上传

但是如果采用这样的方式,那么有一点要注意的是如网页表单为:

<form action="Add" method="post" enctype="MULTIPART/FORM-DATA">
<input type="text" name="name">
<input type="file" name="file" size="30"/>
<input type="text" name="introduce">
<input type="submit">
</form>

在相应的servlet中,如果采用String name = request.getParameter("name");是取不到值的。

name将为null,原因上网查了下愿意,采用MULTIPART/FORM-DATA文件上传方式,表单内容是以二进制流的方式上传的,所以用普通的方法得不到的。

必须在用getString方法得到

if(item.isFormField()){
if(item.getFieldName().equals("name")) {
name = new String(item.getString().getBytes("iso-8859-1"),"GB2312");
System.out.println(name);
}
else {
introduce = new String(item.getString().getBytes("iso-8859-1"),"GB2312");
System.out.println(introduce);
}

 

这里要说明几个函数的作用

getFieldName就是活的表单的属性名,即name属性

getString表示表单里的内容

比如表单中<input type="text" name="name">

那么当迭代到这一个FileItem时候

item.getFieldName就得到name

item.getString就得到网页中这个输入框中输入的内容

但是getString这里是我出现的第二个问题

女神名字介绍等肯定输入的是中文,用getString获得之后,就乱码了。

所以要转码一下new String(item.getString().getBytes("iso-8859-1"),"GB2312");

如果页面pageEncoding为GBK或者GB2312,则可以用

new String(item.getString().getBytes("iso-8859-1"),"GBK")和new String(item.getString().getBytes("iso-8859-1"),"GB2312");

这两种都是可以通用的

 

如果页面pageEncoding为UTF-8,则只能采用

new String(item.getString().getBytes("iso-8859-1"),"UTF-8");

转载于:https://www.cnblogs.com/xx1994/p/3471791.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值