JSP问题,在FORM里设置了enctype="multipart/form-data"后用request不能取得表单元素的值

我想上传文件,必须加enctype="multipart/form-data",但是,我有想传递一个ID过去,该怎么传才能被接收啊?加了enctype="multipar... 我想上传文件,必须加enctype="multipart/form-data",但是,我有想传递一个ID过去,该怎么传才能被接收啊?加了enctype="multipart/form-data"这个后就用request获取的是null值了,去掉这个就能获取到,我到底该怎么办啊?我想拿到那个ID。。 展开
 我来答
匿名用户
推荐于2018-03-28
展开全部
他是用2进制流传输的,你要按流那出来,解析。具体的自己查API文档。方法都给你说了,提高不了。
提示下,request.getInputStream()-------------------------------------------------这是我使用Apache 的fileupload包写的上传代码 DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (item.isFormField()) { //如果是表单域
System.out.println("表单的参数名称:" + item.getFieldName()
+ ",对应的参数值:" + item.getString("GBK"));
if(item.getFieldName().equals("id")){
goodsID=item.getString();
goodsID=ChangeEncoding.changeToGBK(goodsID);
}
} else { //如果是文件
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
System.out.println("上传文件的名称:" + item.getName()); File file = new File(sc.getRealPath("/")
+ 保存路径, 保存文件名);
item.write(file);
}
}
}
} catch (Exception e) {
e.printStackTrace();
System.err.println("上传文件不成功!");
}
匿名用户
2013-07-31
展开全部
文件上传和普通请求都是用2进制传输的,但是参数的拼接方式不一样,普通请求是param1 , param2.....这样一个一个接起来的。但是文件上传是吧文件的2进制数据和参数混杂起来,报文中还掺杂着一些分割线,标识符等特殊信息。因此对于文件上传,你需要自己来做报文的解析,把参数报文还原成应有的样子,这个现在有很多控件都有这个功能,可以使用apache 的common-fileupload来做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式